diff --git a/Ghidra/Features/Base/src/main/java/ghidra/app/plugin/core/progmgr/ProgramManagerPlugin.java b/Ghidra/Features/Base/src/main/java/ghidra/app/plugin/core/progmgr/ProgramManagerPlugin.java index 1d877cb3b7..368a795e3c 100644 --- a/Ghidra/Features/Base/src/main/java/ghidra/app/plugin/core/progmgr/ProgramManagerPlugin.java +++ b/Ghidra/Features/Base/src/main/java/ghidra/app/plugin/core/progmgr/ProgramManagerPlugin.java @@ -304,7 +304,13 @@ public class ProgramManagerPlugin extends Plugin implements ProgramManager, Opti program = programMgr.getOpenProgram(locator); if (program != null) { program.addConsumer(consumer); - programCache.put(locator, program); + if (!program.isChanged()) { + // Don't put modified programs into the cache. + // NOTE: This will prevent upgraded programs from being added to the cache + // which are already open in the tool. This could be improved if we could + // distinguish between upgrade and non-upgrade changes. + programCache.put(locator, program); + } return program; }