fix for issue #953, courtesy of @jamesu. trace buffer was truncating values.

This commit is contained in:
Azaezel 2014-11-20 14:20:54 -06:00
parent 3039f4399d
commit 1c4cc888f8

View file

@ -470,10 +470,10 @@ ConsoleValueRef CodeBlock::exec(U32 ip, const char *functionName, Namespace *thi
dSprintf(traceBuffer + dStrlen(traceBuffer), sizeof(traceBuffer) - dStrlen(traceBuffer), dSprintf(traceBuffer + dStrlen(traceBuffer), sizeof(traceBuffer) - dStrlen(traceBuffer),
"%s(", thisFunctionName); "%s(", thisFunctionName);
} }
for(i = 0; i < argc; i++) for (i = 0; i < wantedArgc; i++)
{ {
dStrcat(traceBuffer, argv[i+1]); dStrcat(traceBuffer, argv[i+1]);
if(i != argc - 1) if (i != wantedArgc - 1)
dStrcat(traceBuffer, ", "); dStrcat(traceBuffer, ", ");
} }
dStrcat(traceBuffer, ")"); dStrcat(traceBuffer, ")");
@ -1817,7 +1817,7 @@ breakContinue:
ConsoleValueRef ret; ConsoleValueRef ret;
if(nsEntry->mFunctionOffset) if(nsEntry->mFunctionOffset)
ret = nsEntry->mCode->exec(nsEntry->mFunctionOffset, fnName, nsEntry->mNamespace, callArgc, callArgv, false, nsEntry->mPackage); ret = nsEntry->mCode->exec(nsEntry->mFunctionOffset, fnName, nsEntry->mNamespace, callArgc, callArgv, false, nsEntry->mPackage);
STR.popFrame(); STR.popFrame();
// Functions are assumed to return strings, so look ahead to see if we can skip the conversion // Functions are assumed to return strings, so look ahead to see if we can skip the conversion
if(code[ip] == OP_STR_TO_UINT) if(code[ip] == OP_STR_TO_UINT)
@ -1837,7 +1837,7 @@ breakContinue:
} }
else else
STR.setStringValue((const char*)ret); STR.setStringValue((const char*)ret);
// This will clear everything including returnValue // This will clear everything including returnValue
CSTK.popFrame(); CSTK.popFrame();
STR.clearFunctionOffset(); STR.clearFunctionOffset();