From 0987e47c4b06a421e9e2e807a71d99718d3d6317 Mon Sep 17 00:00:00 2001 From: ghidra1 Date: Mon, 20 Dec 2021 15:45:29 -0500 Subject: [PATCH] GP-1624 corrected FunctionDefinitionDataType ordinal numbering when formal signature generated and auto-params are removed. --- .../program/model/data/FunctionDefinitionDataType.java | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/Ghidra/Framework/SoftwareModeling/src/main/java/ghidra/program/model/data/FunctionDefinitionDataType.java b/Ghidra/Framework/SoftwareModeling/src/main/java/ghidra/program/model/data/FunctionDefinitionDataType.java index 6106c52170..4e518c3108 100644 --- a/Ghidra/Framework/SoftwareModeling/src/main/java/ghidra/program/model/data/FunctionDefinitionDataType.java +++ b/Ghidra/Framework/SoftwareModeling/src/main/java/ghidra/program/model/data/FunctionDefinitionDataType.java @@ -97,11 +97,13 @@ public class FunctionDefinitionDataType extends GenericDataType implements Funct Parameter[] parameters = function.getParameters(); ArrayList paramList = new ArrayList(); + int ordinalAdjustment = 0; for (Parameter parameter : parameters) { if (formalSignature && parameter.isAutoParameter()) { + --ordinalAdjustment; continue; } - paramList.add(getParameterDefinition(parameter, formalSignature)); + paramList.add(getParameterDefinition(parameter, formalSignature, ordinalAdjustment)); } params = paramList.toArray(new ParameterDefinition[paramList.size()]); @@ -117,10 +119,11 @@ public class FunctionDefinitionDataType extends GenericDataType implements Funct } } - private ParameterDefinition getParameterDefinition(Parameter param, boolean useFormalType) { + private ParameterDefinition getParameterDefinition(Parameter param, boolean useFormalType, + int ordinalAdjustment) { return new ParameterDefinitionImpl(param.getName(), useFormalType ? param.getFormalDataType() : param.getDataType(), param.getComment(), - param.getOrdinal()); + param.getOrdinal() + ordinalAdjustment); } private void init(FunctionSignature sig) {