diff --git a/Engine/source/console/compiledEval.cpp b/Engine/source/console/compiledEval.cpp index 495268ed2..afa1c5295 100644 --- a/Engine/source/console/compiledEval.cpp +++ b/Engine/source/console/compiledEval.cpp @@ -470,11 +470,11 @@ ConsoleValueRef CodeBlock::exec(U32 ip, const char *functionName, Namespace *thi dSprintf(traceBuffer + dStrlen(traceBuffer), sizeof(traceBuffer) - dStrlen(traceBuffer), "%s(", thisFunctionName); } - for(i = 0; i < argc; i++) + for (i = 0; i < wantedArgc; i++) { - dStrcat(traceBuffer, argv[i+1]); - if(i != argc - 1) - dStrcat(traceBuffer, ", "); + dStrcat(traceBuffer, argv[i + 1]); + if (i != wantedArgc - 1) + dStrcat(traceBuffer, ", "); } dStrcat(traceBuffer, ")"); Con::printf("%s", traceBuffer); @@ -1817,7 +1817,7 @@ breakContinue: ConsoleValueRef ret; if(nsEntry->mFunctionOffset) ret = nsEntry->mCode->exec(nsEntry->mFunctionOffset, fnName, nsEntry->mNamespace, callArgc, callArgv, false, nsEntry->mPackage); - + STR.popFrame(); // Functions are assumed to return strings, so look ahead to see if we can skip the conversion if(code[ip] == OP_STR_TO_UINT) @@ -1831,10 +1831,13 @@ breakContinue: floatStack[++_FLT] = (F32)ret; } else if(code[ip] == OP_STR_TO_NONE) + { + STR.setStringValue(ret.getStringValue()); ip++; + } else STR.setStringValue((const char*)ret); - + // This will clear everything including returnValue CSTK.popFrame(); STR.clearFunctionOffset();