diff --git a/Ghidra/Features/Base/src/main/java/ghidra/app/plugin/core/symboltree/nodes/SymbolCategoryNode.java b/Ghidra/Features/Base/src/main/java/ghidra/app/plugin/core/symboltree/nodes/SymbolCategoryNode.java index 767dea2247..d973c59974 100644 --- a/Ghidra/Features/Base/src/main/java/ghidra/app/plugin/core/symboltree/nodes/SymbolCategoryNode.java +++ b/Ghidra/Features/Base/src/main/java/ghidra/app/plugin/core/symboltree/nodes/SymbolCategoryNode.java @@ -68,13 +68,18 @@ public abstract class SymbolCategoryNode extends SymbolTreeNode { @Override public List generateChildren(TaskMonitor monitor) throws CancelledException { if (!isEnabled) { - return Collections.emptyList(); + return List.of(); + } + + SymbolTreeRootNode root = (SymbolTreeRootNode) getRoot(); + if (root == null) { + // this can happen if the tree is reloaded while we are searching in a background task + return List.of(); } SymbolType symbolType = symbolCategory.getSymbolType(); List list = getSymbols(symbolType, monitor); monitor.checkCancelled(); - SymbolTreeRootNode root = (SymbolTreeRootNode) getRoot(); int groupThreshold = root.getNodeGroupThreshold(); return OrganizationNode.organize(list, groupThreshold, monitor); } @@ -322,6 +327,9 @@ public abstract class SymbolCategoryNode extends SymbolTreeNode { if (this == o) { return true; } + if (o == null) { + return false; + } if (getClass() != o.getClass()) { return false; }