]> git.xonotic.org Git - xonotic/gmqcc.git/blobdiff - exec.cpp
don't generate storep for vector field unless it's an ent field
[xonotic/gmqcc.git] / exec.cpp
index 9e49ed8e9367df2537c8af5493c1d8decd89f342..387923f27b3c9d86f7cf772085ba2740a689087a 100644 (file)
--- a/exec.cpp
+++ b/exec.cpp
@@ -113,7 +113,8 @@ qc_program_t* prog_load(const char *filename, bool skipversion)
     /* spawn the world entity */
     prog->entitypool.emplace_back(true);
     prog->entitydata.resize(prog->entityfields);
-    memset(prog->entitydata.data(), 0, sizeof(prog->entitydata[0]) * prog->entityfields);
+    if (prog->entitydata.size())
+        memset(prog->entitydata.data(), 0, sizeof(prog->entitydata[0]) * prog->entityfields);
     prog->entities = 1;
 
     /* cache some globals and fields from names */
@@ -517,8 +518,10 @@ static qcint_t prog_leavefunction(qc_program_t *prog) {
     oldsp = prog->stack[prog->stack.size()-1].localsp;
 #endif
     if (prev) {
-        qcint_t *globals = &prog->globals[0] + prev->firstlocal;
-        memcpy(globals, &prog->localstack[oldsp], prev->locals * sizeof(prog->localstack[0]));
+        if (prev->locals) {
+            qcint_t *globals = &prog->globals[0] + prev->firstlocal;
+            memcpy(globals, &prog->localstack[oldsp], prev->locals * sizeof(prog->localstack[0]));
+        }
         prog->localstack.resize(oldsp);
     }