From 3039f4399dbef9c72c5312b15c9fbb781e3de5db Mon Sep 17 00:00:00 2001 From: Azaezel Date: Thu, 20 Nov 2014 14:17:59 -0600 Subject: [PATCH 1/3] eval(methodWithReturnValue) wasn't passing along it's return value though the stringstack.fix courtessy of @jamesu --- Engine/source/console/compiledEval.cpp | 3 +++ 1 file changed, 3 insertions(+) diff --git a/Engine/source/console/compiledEval.cpp b/Engine/source/console/compiledEval.cpp index 495268ed2..4b5871869 100644 --- a/Engine/source/console/compiledEval.cpp +++ b/Engine/source/console/compiledEval.cpp @@ -1831,7 +1831,10 @@ breakContinue: floatStack[++_FLT] = (F32)ret; } else if(code[ip] == OP_STR_TO_NONE) + { + STR.setStringValue(ret.getStringValue()); ip++; + } else STR.setStringValue((const char*)ret); From 1c4cc888f820d34efa70794815784d244ab4b101 Mon Sep 17 00:00:00 2001 From: Azaezel Date: Thu, 20 Nov 2014 14:20:54 -0600 Subject: [PATCH 2/3] fix for issue #953, courtesy of @jamesu. trace buffer was truncating values. --- Engine/source/console/compiledEval.cpp | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/Engine/source/console/compiledEval.cpp b/Engine/source/console/compiledEval.cpp index 4b5871869..c2c720b8c 100644 --- a/Engine/source/console/compiledEval.cpp +++ b/Engine/source/console/compiledEval.cpp @@ -470,10 +470,10 @@ 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) + if (i != wantedArgc - 1) dStrcat(traceBuffer, ", "); } dStrcat(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) @@ -1837,7 +1837,7 @@ breakContinue: } else STR.setStringValue((const char*)ret); - + // This will clear everything including returnValue CSTK.popFrame(); STR.clearFunctionOffset(); From 4ea051a93985d46b6b3f5e481e22f11bcc78bbaf Mon Sep 17 00:00:00 2001 From: Azaezel Date: Thu, 20 Nov 2014 14:38:17 -0600 Subject: [PATCH 3/3] tabs --- Engine/source/console/compiledEval.cpp | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/Engine/source/console/compiledEval.cpp b/Engine/source/console/compiledEval.cpp index c2c720b8c..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 < wantedArgc; i++) + for (i = 0; i < wantedArgc; i++) { - dStrcat(traceBuffer, argv[i+1]); - if (i != wantedArgc - 1) - dStrcat(traceBuffer, ", "); + dStrcat(traceBuffer, argv[i + 1]); + if (i != wantedArgc - 1) + dStrcat(traceBuffer, ", "); } dStrcat(traceBuffer, ")"); Con::printf("%s", traceBuffer); @@ -1837,7 +1837,7 @@ breakContinue: } else STR.setStringValue((const char*)ret); - + // This will clear everything including returnValue CSTK.popFrame(); STR.clearFunctionOffset();