diff --git a/Ghidra/Framework/Project/src/main/java/ghidra/framework/data/DomainObjectAdapterDB.java b/Ghidra/Framework/Project/src/main/java/ghidra/framework/data/DomainObjectAdapterDB.java index 9e89620737..43d9617d05 100644 --- a/Ghidra/Framework/Project/src/main/java/ghidra/framework/data/DomainObjectAdapterDB.java +++ b/Ghidra/Framework/Project/src/main/java/ghidra/framework/data/DomainObjectAdapterDB.java @@ -583,12 +583,16 @@ public abstract class DomainObjectAdapterDB extends DomainObjectAdapter implemen } DomainObjectAdapterDB userData = getUserData(); - if (userData != null && userData.isChanged() && (getDomainFile() instanceof GhidraFile)) { + if (canSave() && userData != null && userData.isChanged() && + (getDomainFile() instanceof GhidraFile)) { + // Only save user data if this domain object was open for update and the + // user data was modified. try { userData.prepareToSave(); userData.save(null, TaskMonitor.DUMMY); } catch (CancelledException e) { + // ignore } catch (IOException e) { Msg.warn(this, "Failed to save user data for: " + getDomainFile().getName()); diff --git a/Ghidra/Framework/SoftwareModeling/src/main/java/ghidra/program/database/ProgramContentHandler.java b/Ghidra/Framework/SoftwareModeling/src/main/java/ghidra/program/database/ProgramContentHandler.java index d5ee0f23e4..ca4ebe3731 100644 --- a/Ghidra/Framework/SoftwareModeling/src/main/java/ghidra/program/database/ProgramContentHandler.java +++ b/Ghidra/Framework/SoftwareModeling/src/main/java/ghidra/program/database/ProgramContentHandler.java @@ -28,6 +28,7 @@ import ghidra.framework.model.ChangeSet; import ghidra.framework.model.DomainObject; import ghidra.framework.store.*; import ghidra.framework.store.local.LocalDatabaseItem; +import ghidra.program.model.lang.LanguageNotFoundException; import ghidra.util.InvalidNameException; import ghidra.util.Msg; import ghidra.util.exception.CancelledException; @@ -232,9 +233,25 @@ public class ProgramContentHandler extends DBWithUserDataContentHandler getPropertyMap(String owner, String propertyName, int propertyType, Class saveableClass, boolean create) throws PropertyTypeMismatchException {