Przeglądaj źródła

Merge pull request #955 from Azaezel/EvalReturn_issue_953

Eval return issue 953 and trace buffer 952
Daniel Buckmaster 11 lat temu
rodzic
commit
ae00e3046f
1 zmienionych plików z 9 dodań i 6 usunięć
  1. 9 6
      Engine/source/console/compiledEval.cpp

+ 9 - 6
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();