From 67bc99223d064fd5ff5e719433e200ca8ca83b84 Mon Sep 17 00:00:00 2001 From: Wolfgang Bumiller Date: Sun, 23 Dec 2012 17:32:14 +0100 Subject: [PATCH] Fix a nasty bug in the executor; and make null-strings be shown as (null) in the trace output --- exec.c | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/exec.c b/exec.c index 270bd14..54201ff 100644 --- 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); } -- 2.39.2