Skip to content

Commit cf63740

Browse files
committed
Merge remote-tracking branch 'origin/GP-0_Dan_testFixes-20220712-1'
2 parents 3f351ee + 1134981 commit cf63740

File tree

2 files changed

+17
-2
lines changed

2 files changed

+17
-2
lines changed

Ghidra/Debug/Debugger/src/main/java/ghidra/app/plugin/core/debug/gui/model/ObjectTreeModel.java

Lines changed: 16 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -26,6 +26,7 @@
2626
import docking.widgets.tree.GTreeNode;
2727
import ghidra.app.plugin.core.debug.gui.DebuggerResources;
2828
import ghidra.dbg.target.*;
29+
import ghidra.framework.model.DomainObjectClosedListener;
2930
import ghidra.trace.database.DBTraceUtils;
3031
import ghidra.trace.model.Trace;
3132
import ghidra.trace.model.Trace.TraceObjectChangeType;
@@ -37,14 +38,20 @@
3738

3839
public class ObjectTreeModel implements DisplaysModified {
3940

40-
class ListenerForChanges extends TraceDomainObjectListener {
41+
class ListenerForChanges extends TraceDomainObjectListener
42+
implements DomainObjectClosedListener {
4143
public ListenerForChanges() {
4244
listenFor(TraceObjectChangeType.CREATED, this::objectCreated);
4345
listenFor(TraceObjectChangeType.VALUE_CREATED, this::valueCreated);
4446
listenFor(TraceObjectChangeType.VALUE_DELETED, this::valueDeleted);
4547
listenFor(TraceObjectChangeType.VALUE_LIFESPAN_CHANGED, this::valueLifespanChanged);
4648
}
4749

50+
@Override
51+
public void domainObjectClosed() {
52+
setTrace(null);
53+
}
54+
4855
protected boolean isEventValue(TraceObjectValue value) {
4956
if (!value.getParent()
5057
.getTargetSchema()
@@ -174,6 +181,11 @@ protected AbstractNode getByObject(TraceObject object) {
174181
}
175182
return byObject.get(new IDKeyed<>(object));
176183
}
184+
185+
public void invalidate() {
186+
byObject.clear();
187+
byValue.clear();
188+
}
177189
}
178190

179191
public abstract class AbstractNode extends GTreeLazyNode {
@@ -600,12 +612,14 @@ public GTreeLazyNode getRoot() {
600612
protected void removeOldListeners() {
601613
if (trace != null) {
602614
trace.removeListener(listenerForChanges);
615+
trace.removeCloseListener(listenerForChanges);
603616
}
604617
}
605618

606619
protected void addNewListeners() {
607620
if (trace != null) {
608621
trace.addListener(listenerForChanges);
622+
trace.addCloseListener(listenerForChanges);
609623
}
610624
}
611625

@@ -616,6 +630,7 @@ protected void refresh() {
616630
}
617631

618632
protected void reload() {
633+
nodeCache.invalidate();
619634
root.unloadChildren();
620635
}
621636

Ghidra/Debug/Debugger/src/test/java/ghidra/app/plugin/core/debug/gui/modules/DebuggerModulesProviderTest.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -232,7 +232,7 @@ public void testBlockChooserDialogPopulates() throws Exception {
232232
waitForDomainObject(program);
233233
waitForPass(() -> assertEquals(4, modulesProvider.sectionTable.getRowCount()));
234234

235-
modulesProvider.setSelectedSections(Set.of(secExeText));
235+
runSwing(() -> modulesProvider.setSelectedSections(Set.of(secExeText)));
236236
performAction(modulesProvider.actionMapSections, false);
237237

238238
DebuggerSectionMapProposalDialog propDialog =

0 commit comments

Comments
 (0)