X-Git-Url: https://code.kerkeslager.com/?p=fur;a=blobdiff_plain;f=templates%2Fprogram.c;h=aba83820e5d0d0227d6c1d7cc6bf2c7e6aff6c52;hp=0cab0c8f45f99389608ee7b3d20c9746aad6a7b7;hb=e5e0dba41edce39475f839e29650007b37641be9;hpb=d8fdecee02795cb0372627208c4f0a52ae7814f9 diff --git a/templates/program.c b/templates/program.c index 0cab0c8..aba8382 100644 --- a/templates/program.c +++ b/templates/program.c @@ -333,15 +333,15 @@ Object builtin$print = { CLOSURE, (Instance)builtin$print$implementation }; {% for function_definition in function_definition_list %} Object user${{function_definition.name}}$implementation(Environment* parent, size_t argc, Object* args) { - Environment environment; - Environment_initialize(&environment, parent); + Environment* environment = malloc(sizeof(Environment));; + Environment_initialize(environment, parent); {% for statement in function_definition.statement_list[:-1] %} {{ generate_statement(statement) }} {% endfor %} Object result = {{ generate_statement(function_definition.statement_list[-1]) }} - Environment_deinitialize(&environment); + Environment_deinitialize(environment); return result; } @@ -350,19 +350,20 @@ Object user${{function_definition.name}} = { CLOSURE, (Instance)user${{function_ int main(int argc, char** argv) { - Environment environment; - Environment_initialize(&environment, NULL); + Environment* environment = malloc(sizeof(Environment)); + Environment_initialize(environment, NULL); // TODO Use the symbol from SYMBOL_LIST {% for builtin in builtins %} - Environment_set(&environment, "{{ builtin }}", builtin${{ builtin }}); + Environment_set(environment, "{{ builtin }}", builtin${{ builtin }}); {% endfor %} {% for statement in statements %} {{ generate_statement(statement) }} {% endfor %} - Environment_deinitialize(&environment); + Environment_deinitialize(environment); + free(environment); return 0; }