diff --git a/vm/vm.cpp b/vm/vm.cpp index a3caebf294..5195d839e9 100644 --- a/vm/vm.cpp +++ b/vm/vm.cpp @@ -13,8 +13,7 @@ factor_vm::factor_vm(THREADHANDLE thread) signal_pipe_input(0), signal_pipe_output(0), gc_off(false), - data(NULL), - callbacks(NULL), + data(NULL), code(NULL), callbacks(NULL), current_gc(NULL), current_gc_p(false), current_jit_count(0), @@ -30,6 +29,9 @@ factor_vm::factor_vm(THREADHANDLE thread) } factor_vm::~factor_vm() { + free(alien_offset(special_objects[OBJ_EXECUTABLE])); + free(alien_offset(special_objects[OBJ_IMAGE])); + close_console(); FACTOR_ASSERT(!ctx); FACTOR_FOR_EACH(unused_contexts) { delete *iter; @@ -41,6 +43,8 @@ factor_vm::~factor_vm() { delete callbacks; if (data) delete data; + if (code) + delete code; if (signal_callstack_seg) { delete signal_callstack_seg; signal_callstack_seg = NULL;