]> ocean-lang.org Git - ocean/blobdiff - csrc/parsergen.mdc
parsergen: allow $<1 to be used for structs as well as pointer.
[ocean] / csrc / parsergen.mdc
index 6d291312547f0aad1ddadc57ee2affeb7e8b3802..d30275e4e4d383a22905acd1e415c72d89fc56de 100644 (file)
@@ -2112,10 +2112,13 @@ automatically freed.  This is equivalent to assigning `NULL` to the pointer.
                fputs("\n", f);
                for (i = 0; i < p->body_size; i++) {
                        if (p->body[i]->struct_name.txt &&
-                           p->body[i]->isref &&
-                           used[i])
+                           used[i]) {
                                // assume this has been copied out
-                               fprintf(f, "\t\t*(void**)body[%d] = NULL;\n", i);
+                               if (p->body[i]->isref)
+                                       fprintf(f, "\t\t*(void**)body[%d] = NULL;\n", i);
+                               else
+                                       fprintf(f, "\t\tmemset(body[%d], 0, sizeof(struct %.*s));\n", i, p->body[i]->struct_name.len, p->body[i]->struct_name.txt);
+                       }
                }
                free(used);
        }