X-Git-Url: https://code.kerkeslager.com/?p=fur;a=blobdiff_plain;f=templates%2Ffunction_definition.c;h=9af76327a69324a90de3aaeedc8fc4604e944fc5;hp=d20eba676f34f5a880b66ef3280b28477d2a39a3;hb=76ffe5adf4f6497945684e700dec15c809897d77;hpb=b47a0017d1dbfda8e8bae7989fff9ccb31897a28 diff --git a/templates/function_definition.c b/templates/function_definition.c index d20eba6..9af7632 100644 --- a/templates/function_definition.c +++ b/templates/function_definition.c @@ -4,17 +4,14 @@ Object user${{name}}$implementation(EnvironmentPool* environmentPool, Environmen environment = Environment_construct(environmentPool, environment); Stack* stack = Stack_construct(); + StackSnapshot stackSnapshot = Stack_takeSnapshot(stack); jmp_buf jump; if(setjmp(jump) != 0) { fprintf(stderr, "\tin {{name}}\n"); - while(Stack_any(stack)) - { - Object item = Stack_pop(stack); - Object_deinitialize(&item); - } + Stack_rewind(stack, stackSnapshot); Environment_setLive(environment, false); Stack_destruct(stack);