Browse Source

Automatically unload all modules and free up memory on VM release.

pull/10/head
Rafal Kupiec 3 years ago
parent
commit
5908307885
Signed by: belliash GPG Key ID: 4E829243E0CFE6B4
1 changed files with 8 additions and 0 deletions
  1. +8
    -0
      vm.c

+ 8
- 0
vm.c View File

@ -1465,6 +1465,14 @@ PH7_PRIVATE sxi32 PH7_VmReset(ph7_vm *pVm) {
* Every virtual machine must be destroyed in order to avoid memory leaks.
*/
PH7_PRIVATE sxi32 PH7_VmRelease(ph7_vm *pVm) {
VmModule *pEntry;
/* Iterate through modules list */
while(SySetGetNextEntry(&pVm->aModules, (void **)&pEntry) == SXRET_OK) {
/* Unload the module */
dlclose(pEntry->pHandle);
}
/* Free up the heap */
SySetRelease(&pVm->aModules);
/* Set the stale magic number */
pVm->nMagic = PH7_VM_STALE;
/* Release the private memory subsystem */


Loading…
Cancel
Save