diff --git a/engine/vm.c b/engine/vm.c index d36eea3..047a2ce 100644 --- a/engine/vm.c +++ b/engine/vm.c @@ -5056,7 +5056,7 @@ PH7_PRIVATE sxi32 PH7_VmByteCodeExec(ph7_vm *pVm) { ph7_class *pClass; ph7_class_instance *pInstance; ph7_class_method *pMethod; - ph7_value *pArgs, *sArgv; + ph7_value *pArgs, *sArgv, *pObj; ph7_value pResult; char *zDup; const char *zStr, *zParam; @@ -5122,6 +5122,10 @@ PH7_PRIVATE sxi32 PH7_VmByteCodeExec(ph7_vm *pVm) { pVm->iExitStatus = 0; } } + /* Garbage collector over all elements in object allocation table */ + while(SySetGetNextEntry(&pVm->aMemObj, (void **)&pObj) == SXRET_OK) { + PH7_MemObjRelease(pObj); + } /* Invoke any shutdown callbacks */ VmInvokeShutdownCallbacks(&(*pVm)); /*