From 6aefaa106dc70c35b4ed9a7b4efc18d987e89b59 Mon Sep 17 00:00:00 2001 From: caheckman <48068198+caheckman@users.noreply.github.com> Date: Thu, 3 Mar 2022 18:35:28 -0500 Subject: [PATCH] GP-1792 Prevent proto override from cancelling a callfixup --- Ghidra/Features/Decompiler/src/decompile/cpp/flow.cc | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/Ghidra/Features/Decompiler/src/decompile/cpp/flow.cc b/Ghidra/Features/Decompiler/src/decompile/cpp/flow.cc index dac7169ccd..178047f043 100644 --- a/Ghidra/Features/Decompiler/src/decompile/cpp/flow.cc +++ b/Ghidra/Features/Decompiler/src/decompile/cpp/flow.cc @@ -646,9 +646,9 @@ void FlowInfo::queryCall(FuncCallSpecs &fspecs) Funcdata *otherfunc = data.getScopeLocal()->getParent()->queryFunction( fspecs.getEntryAddress() ); if (otherfunc != (Funcdata *)0) { fspecs.setFuncdata(otherfunc); // Associate the symbol with the callsite - if (!fspecs.hasModel()) { // If the prototype was not overridden - fspecs.copyFlowEffects(otherfunc->getFuncProto()); // Take the symbols's prototype - // If the callsite is applying just the standard prototype from the symbol, + if (!fspecs.hasModel() || otherfunc->getFuncProto().isInline()) { // If the prototype was not overridden + fspecs.copyFlowEffects(otherfunc->getFuncProto()); // Take the flow affects of the symbol + // If the call site is applying just the standard prototype from the symbol, // this postpones the full copy of the prototype until ActionDefaultParams // Which lets "last second" changes come in, between when the function is first walked and // when it is finally decompiled