diff --git a/Ghidra/Features/Decompiler/src/main/java/ghidra/app/cmd/function/DecompilerSwitchAnalysisCmd.java b/Ghidra/Features/Decompiler/src/main/java/ghidra/app/cmd/function/DecompilerSwitchAnalysisCmd.java index 5fd5b4d6b0..e660083a47 100644 --- a/Ghidra/Features/Decompiler/src/main/java/ghidra/app/cmd/function/DecompilerSwitchAnalysisCmd.java +++ b/Ghidra/Features/Decompiler/src/main/java/ghidra/app/cmd/function/DecompilerSwitchAnalysisCmd.java @@ -306,22 +306,27 @@ public class DecompilerSwitchAnalysisCmd extends BackgroundCommand { * Label switch table, cases, default with labels in namespace of the switch */ private void labelSwitch(JumpTable table, TaskMonitor monitor) throws CancelledException { + + String labelName = "switchD"; + AddLabelCmd tableNameLabel = - new AddLabelCmd(table.getSwitchAddress(), "switchD", SourceType.ANALYSIS); + new AddLabelCmd(table.getSwitchAddress(), labelName, SourceType.ANALYSIS); // check if the table is already labeled Symbol syms[] = program.getSymbolTable().getSymbols(table.getSwitchAddress()); for (Symbol sym : syms) { - if (sym.getName(false).startsWith(tableNameLabel.getLabelName())) { + if (sym.getName(false).startsWith(labelName)) { return; } } + Function func = decompilerResults.getFunction(); + // put switch table cases into a new switch namespace Namespace space = null; String switchName = "switchD_" + table.getSwitchAddress(); try { - space = program.getSymbolTable().createNameSpace(null, switchName, SourceType.ANALYSIS); + space = program.getSymbolTable().createNameSpace(func, switchName, SourceType.ANALYSIS); } catch (DuplicateNameException e) { space = program.getSymbolTable().getNamespace(switchName, null);