]> git.xonotic.org Git - xonotic/gmqcc.git/commitdiff
Fix a nasty bug in the executor; and make null-strings be shown as (null) in the...
authorWolfgang Bumiller <blub@speed.at>
Sun, 23 Dec 2012 16:32:14 +0000 (17:32 +0100)
committerWolfgang Bumiller <blub@speed.at>
Sun, 23 Dec 2012 16:32:14 +0000 (17:32 +0100)
exec.c

diff --git a/exec.c b/exec.c
index 270bd149e2123e9fbd2621c2fbf52e63ea4dee6b..54201ffe66a0faeca60c28ae7e16b5d985c48959 100644 (file)
--- a/exec.c
+++ b/exec.c
@@ -344,7 +344,10 @@ static void trace_print_global(qc_program *prog, unsigned int glob, int vtype)
                                          value->vector[2]);
             break;
         case TYPE_STRING:
-            len += print_escaped_string(prog_getstring(prog, value->string), sizeof(spaces)-len-5);
+            if (value->string)
+                len += print_escaped_string(prog_getstring(prog, value->string), sizeof(spaces)-len-5);
+            else
+                len += printf("(null)");
             len += printf(",");
             /* len += printf("\"%s\",", prog_getstring(prog, value->string)); */
             break;
@@ -532,7 +535,7 @@ static qcint prog_leavefunction(qc_program *prog)
 #endif
     if (prev) {
         qcint *globals = prog->globals + prev->firstlocal;
-        memcpy(globals, prog->localstack + oldsp, prev->locals);
+        memcpy(globals, prog->localstack + oldsp, prev->locals * sizeof(prog->localstack[0]));
         /* vec_remove(prog->localstack, oldsp, vec_size(prog->localstack)-oldsp); */
         vec_shrinkto(prog->localstack, oldsp);
     }