diff --git a/Ghidra/Debug/Debugger-gadp/src/main/java/ghidra/dbg/gadp/client/GadpClientTargetObject.java b/Ghidra/Debug/Debugger-gadp/src/main/java/ghidra/dbg/gadp/client/GadpClientTargetObject.java index 7defc5592a..5739f7c19d 100644 --- a/Ghidra/Debug/Debugger-gadp/src/main/java/ghidra/dbg/gadp/client/GadpClientTargetObject.java +++ b/Ghidra/Debug/Debugger-gadp/src/main/java/ghidra/dbg/gadp/client/GadpClientTargetObject.java @@ -41,7 +41,7 @@ public interface GadpClientTargetObject extends SpiTargetObject { @GadpEventHandler(Gadp.EventNotification.EvtCase.OBJECT_INVALIDATE_EVENT) default void handleObjectInvalidateEvent(Gadp.EventNotification notification) { Gadp.ObjectInvalidateEvent evt = notification.getObjectInvalidateEvent(); - getDelegate().doInvalidate(this, evt.getReason()); + getDelegate().invalidateSubtree(this, evt.getReason()); } @GadpEventHandler(Gadp.EventNotification.EvtCase.CACHE_INVALIDATE_EVENT) diff --git a/Ghidra/Debug/Debugger-gadp/src/test/java/ghidra/dbg/gadp/GadpClientServerTest.java b/Ghidra/Debug/Debugger-gadp/src/test/java/ghidra/dbg/gadp/GadpClientServerTest.java index 2057ffdc09..fd3ee528d8 100644 --- a/Ghidra/Debug/Debugger-gadp/src/test/java/ghidra/dbg/gadp/GadpClientServerTest.java +++ b/Ghidra/Debug/Debugger-gadp/src/test/java/ghidra/dbg/gadp/GadpClientServerTest.java @@ -1013,8 +1013,8 @@ public class GadpClientServerTest implements AsyncTestUtils { ssAvail.setElements(List.of(new TestGadpTargetAvailable(ssAvail, 1, "cat") // ), "Changed"); - waitOn(invL.count.waitValue(2)); - waitOn(elemL.count.waitValue(2)); + waitOn(invL.count.waitUntil(c -> c >= 2)); + waitOn(elemL.count.waitUntil(c -> c >= 2)); for (TargetObject a : avail1.values()) { assertFalse(a.isValid()); diff --git a/Ghidra/Debug/Framework-Debugging/src/main/java/ghidra/dbg/agent/AbstractTargetObject.java b/Ghidra/Debug/Framework-Debugging/src/main/java/ghidra/dbg/agent/AbstractTargetObject.java index 949827a20d..93435fa8a5 100644 --- a/Ghidra/Debug/Framework-Debugging/src/main/java/ghidra/dbg/agent/AbstractTargetObject.java +++ b/Ghidra/Debug/Framework-Debugging/src/main/java/ghidra/dbg/agent/AbstractTargetObject.java @@ -243,6 +243,9 @@ public abstract class AbstractTargetObject
implements Sp } protected void doInvalidate(TargetObject branch, String reason) { + if (!valid) { + return; + } valid = false; model.objectInvalidated(getProxy()); listeners.fire.invalidated(getProxy(), branch, reason);