From 3f25f757829dc5b17cd325a25902ca039b33680f Mon Sep 17 00:00:00 2001 From: ghidra1 Date: Thu, 23 Sep 2021 23:02:55 -0400 Subject: [PATCH] GP-1320 corrected DTM used when Function Editor parses signature --- .../java/ghidra/app/util/parser/FunctionSignatureParser.java | 2 +- .../Base/src/main/java/ghidra/util/data/DataTypeParser.java | 2 +- .../ghidra/program/model/data/ParameterDefinitionImpl.java | 3 ++- 3 files changed, 4 insertions(+), 3 deletions(-) diff --git a/Ghidra/Features/Base/src/main/java/ghidra/app/util/parser/FunctionSignatureParser.java b/Ghidra/Features/Base/src/main/java/ghidra/app/util/parser/FunctionSignatureParser.java index 8a74a413c9..603eac7cd5 100644 --- a/Ghidra/Features/Base/src/main/java/ghidra/app/util/parser/FunctionSignatureParser.java +++ b/Ghidra/Features/Base/src/main/java/ghidra/app/util/parser/FunctionSignatureParser.java @@ -206,7 +206,7 @@ public class FunctionSignatureParser { // attempt to separate trailing parameter name from datatype and reparse int spaceIndex = arg.lastIndexOf(' '); if (spaceIndex < 0) { - throw new ParseException("Can't resolve datatype: " + dt); + throw new ParseException("Can't resolve datatype: " + arg); } int starIndex = arg.lastIndexOf('*'); int nameIndex = Math.max(spaceIndex, starIndex) + 1; diff --git a/Ghidra/Features/Base/src/main/java/ghidra/util/data/DataTypeParser.java b/Ghidra/Features/Base/src/main/java/ghidra/util/data/DataTypeParser.java index 3dc3e1a8b7..e46cfd75dd 100644 --- a/Ghidra/Features/Base/src/main/java/ghidra/util/data/DataTypeParser.java +++ b/Ghidra/Features/Base/src/main/java/ghidra/util/data/DataTypeParser.java @@ -416,7 +416,7 @@ public class DataTypeParser { // handle C primitives (e.g. long long, unsigned long int, etc.) DataType dataType = DataTypeUtilities.getCPrimitiveDataType(baseName); if (dataType != null) { - return dataType; + return dataType.clone(dtm); } dtm.findDataTypes(baseName, list); diff --git a/Ghidra/Framework/SoftwareModeling/src/main/java/ghidra/program/model/data/ParameterDefinitionImpl.java b/Ghidra/Framework/SoftwareModeling/src/main/java/ghidra/program/model/data/ParameterDefinitionImpl.java index 647130b0f5..25384ef8ca 100644 --- a/Ghidra/Framework/SoftwareModeling/src/main/java/ghidra/program/model/data/ParameterDefinitionImpl.java +++ b/Ghidra/Framework/SoftwareModeling/src/main/java/ghidra/program/model/data/ParameterDefinitionImpl.java @@ -48,7 +48,8 @@ public class ParameterDefinitionImpl implements ParameterDefinition { * @throws IllegalArgumentException if invalid parameter datatype specified */ protected ParameterDefinitionImpl(String name, DataType dataType, String comment, int ordinal) { - this.dataType = validateDataType(dataType, null, false); + this.dataType = validateDataType(dataType, + dataType != null ? dataType.getDataTypeManager() : null, false); this.name = name; this.comment = comment; this.ordinal = ordinal;