diff --git a/Ghidra/Framework/SoftwareModeling/src/main/java/ghidra/program/database/data/CompositeDB.java b/Ghidra/Framework/SoftwareModeling/src/main/java/ghidra/program/database/data/CompositeDB.java index 51f07331c0..73832131d0 100644 --- a/Ghidra/Framework/SoftwareModeling/src/main/java/ghidra/program/database/data/CompositeDB.java +++ b/Ghidra/Framework/SoftwareModeling/src/main/java/ghidra/program/database/data/CompositeDB.java @@ -276,13 +276,13 @@ abstract class CompositeDB extends DataTypeDB implements Composite { } } - protected DataType doCheckedResolve(DataType dt, DataTypeConflictHandler handler) + protected DataType doCheckedResolve(DataType dt) throws DataTypeDependencyException { if (dt instanceof Pointer) { pointerPostResolveRequired = true; return resolve(((Pointer) dt).newPointer(DataType.DEFAULT)); } - dt = resolve(dt, handler); + dt = resolve(dt); checkAncestry(dt); return dt; } diff --git a/Ghidra/Framework/SoftwareModeling/src/main/java/ghidra/program/database/data/DataTypeDB.java b/Ghidra/Framework/SoftwareModeling/src/main/java/ghidra/program/database/data/DataTypeDB.java index d98f95b2fc..8cb24332e8 100644 --- a/Ghidra/Framework/SoftwareModeling/src/main/java/ghidra/program/database/data/DataTypeDB.java +++ b/Ghidra/Framework/SoftwareModeling/src/main/java/ghidra/program/database/data/DataTypeDB.java @@ -268,15 +268,11 @@ abstract class DataTypeDB extends DatabaseObject implements DataType, ChangeList } protected DataType resolve(DataType dt) { - return resolve(dt, dataMgr.getDependencyConflictHandler()); - } - - protected DataType resolve(DataType dt, DataTypeConflictHandler handler) { // complex types should keep equivalence checks to a minimum while resolving // and when post-resolve required for pointers resolving = true; try { - dt = dataMgr.resolve(dt, handler); + dt = dataMgr.resolve(dt, dataMgr.getDependencyConflictHandler()); } finally { resolving = false; diff --git a/Ghidra/Framework/SoftwareModeling/src/main/java/ghidra/program/database/data/FunctionDefinitionDB.java b/Ghidra/Framework/SoftwareModeling/src/main/java/ghidra/program/database/data/FunctionDefinitionDB.java index bb9c304cb4..cd471f5520 100644 --- a/Ghidra/Framework/SoftwareModeling/src/main/java/ghidra/program/database/data/FunctionDefinitionDB.java +++ b/Ghidra/Framework/SoftwareModeling/src/main/java/ghidra/program/database/data/FunctionDefinitionDB.java @@ -260,7 +260,7 @@ class FunctionDefinitionDB extends DataTypeDB implements FunctionDefinition { for (int i = 0; i < args.length; i++) { DataType type = ParameterDefinitionImpl.validateDataType(args[i].getDataType(), dataMgr, false); - DataType resolvedDt = resolve(type, dataMgr.getDependencyConflictHandler()); + DataType resolvedDt = resolve(type); paramAdapter.createRecord(dataMgr.getID(resolvedDt), key, i, args[i].getName(), args[i].getComment(), args[i].getLength()); resolvedDt.addParent(this); @@ -287,7 +287,7 @@ class FunctionDefinitionDB extends DataTypeDB implements FunctionDefinition { if (type == null) { type = DataType.DEFAULT; } - DataType resolvedDt = resolve(type, dataMgr.getDependencyConflictHandler()); + DataType resolvedDt = resolve(type); record.setLongValue(FunctionDefinitionDBAdapter.FUNCTION_DEF_RETURN_ID_COL, dataMgr.getID(resolvedDt)); funDefAdapter.updateRecord(record, true); @@ -472,7 +472,7 @@ class FunctionDefinitionDB extends DataTypeDB implements FunctionDefinition { param.getDataType().removeParent(this); paramAdapter.removeRecord(param.getKey()); } - DataType rdt = resolve(dt, dataMgr.getDependencyConflictHandler()); + DataType rdt = resolve(dt); rdt.addParent(this); paramAdapter.createRecord(dataMgr.getID(rdt), key, ordinal, name, comment, dt.getLength()); diff --git a/Ghidra/Framework/SoftwareModeling/src/main/java/ghidra/program/database/data/StructureDB.java b/Ghidra/Framework/SoftwareModeling/src/main/java/ghidra/program/database/data/StructureDB.java index 4dae0c4afc..afb5024090 100644 --- a/Ghidra/Framework/SoftwareModeling/src/main/java/ghidra/program/database/data/StructureDB.java +++ b/Ghidra/Framework/SoftwareModeling/src/main/java/ghidra/program/database/data/StructureDB.java @@ -115,7 +115,7 @@ class StructureDB extends CompositeDB implements Structure { if (validateAlignAndNotify) { validateDataType(dataType); - dataType = resolve(dataType, null); + dataType = resolve(dataType); checkAncestry(dataType); } @@ -172,7 +172,7 @@ class StructureDB extends CompositeDB implements Structure { if (validateAlignAndNotify) { validateDataType(dataType); - dataType = resolve(dataType, null); + dataType = resolve(dataType); if (isInvalidFlexArrayDataType(dataType)) { throw new IllegalArgumentException( "Unsupported flexType: " + dataType.getDisplayName()); @@ -1187,18 +1187,16 @@ class StructureDB extends CompositeDB implements Structure { void doReplaceWith(Structure struct, boolean notify) throws DataTypeDependencyException, IOException { - DataTypeConflictHandler handler = dataMgr.getDependencyConflictHandler(); - // pre-resolved component types to catch dependency issues early DataTypeComponent flexComponent = struct.getFlexibleArrayComponent(); DataTypeComponent[] otherComponents = struct.getDefinedComponents(); DataType[] resolvedDts = new DataType[otherComponents.length]; for (int i = 0; i < otherComponents.length; i++) { - resolvedDts[i] = doCheckedResolve(otherComponents[i].getDataType(), handler); + resolvedDts[i] = doCheckedResolve(otherComponents[i].getDataType()); } DataType resolvedFlexDt = null; if (flexComponent != null) { - resolvedFlexDt = doCheckedResolve(flexComponent.getDataType(), handler); + resolvedFlexDt = doCheckedResolve(flexComponent.getDataType()); if (isInvalidFlexArrayDataType(resolvedFlexDt)) { throw new IllegalArgumentException( "Unsupported flexType: " + resolvedFlexDt.getDisplayName()); diff --git a/Ghidra/Framework/SoftwareModeling/src/main/java/ghidra/program/database/data/UnionDB.java b/Ghidra/Framework/SoftwareModeling/src/main/java/ghidra/program/database/data/UnionDB.java index e8f234d5d8..1c3bb0faef 100644 --- a/Ghidra/Framework/SoftwareModeling/src/main/java/ghidra/program/database/data/UnionDB.java +++ b/Ghidra/Framework/SoftwareModeling/src/main/java/ghidra/program/database/data/UnionDB.java @@ -266,13 +266,11 @@ class UnionDB extends CompositeDB implements Union { void doReplaceWith(Union union, boolean notify) throws DataTypeDependencyException { - DataTypeConflictHandler handler = dataMgr.getDependencyConflictHandler(); - // pre-resolved component types to catch dependency issues early DataTypeComponent[] otherComponents = union.getComponents(); DataType[] resolvedDts = new DataType[otherComponents.length]; for (int i = 0; i < otherComponents.length; i++) { - resolvedDts[i] = doCheckedResolve(otherComponents[i].getDataType(), handler); + resolvedDts[i] = doCheckedResolve(otherComponents[i].getDataType()); checkAncestry(resolvedDts[i]); }