Merge remote-tracking branch 'origin/GP-1792_CallfixupProtoOverride'

into patch (Closes #3319)
This commit is contained in:
Ryan Kurtz 2022-03-09 00:42:02 -05:00
commit 06e3580fdd

View file

@ -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