Getting sleepy

This commit is contained in:
2022-09-03 09:20:21 +01:00
parent 672d68a73f
commit e6fe42c0ca

View File

@@ -460,21 +460,21 @@ void initInterpreter(Interpreter* interpreter) {
void freeInterpreter(Interpreter* interpreter) { void freeInterpreter(Interpreter* interpreter) {
//BUGFIX: handle scopes of functions, which refer to the parent scope (leaking memory) //BUGFIX: handle scopes of functions, which refer to the parent scope (leaking memory)
while(inner.scope != NULL) { while(interpreter->scope != NULL) {
for (int i = 0; i < inner.scope->variables.capacity; i++) { for (int i = 0; i < interpreter->scope->variables.capacity; i++) {
//handle keys, just in case //handle keys, just in case
if (IS_FUNCTION(inner.scope->variables.entries[i].key)) { if (IS_FUNCTION(interpreter->scope->variables.entries[i].key)) {
popScope(AS_FUNCTION(inner.scope->variables.entries[i].key).scope); popScope(AS_FUNCTION(interpreter->scope->variables.entries[i].key).scope);
AS_FUNCTION(inner.scope->variables.entries[i].key).scope = NULL; AS_FUNCTION(interpreter->scope->variables.entries[i].key).scope = NULL;
} }
if (IS_FUNCTION(inner.scope->variables.entries[i].value)) { if (IS_FUNCTION(interpreter->scope->variables.entries[i].value)) {
popScope(AS_FUNCTION(inner.scope->variables.entries[i].value).scope); popScope(AS_FUNCTION(interpreter->scope->variables.entries[i].value).scope);
AS_FUNCTION(inner.scope->variables.entries[i].value).scope = NULL; AS_FUNCTION(interpreter->scope->variables.entries[i].value).scope = NULL;
} }
} }
inner.scope = popScope(inner.scope); interpreter->scope = popScope(interpreter->scope);
} }
freeLiteralArray(&interpreter->literalCache); freeLiteralArray(&interpreter->literalCache);