Automatically unload all modules and free up memory on VM release.
This commit is contained in:
parent
ee5504ea3a
commit
5908307885
8
vm.c
8
vm.c
|
@ -1465,6 +1465,14 @@ PH7_PRIVATE sxi32 PH7_VmReset(ph7_vm *pVm) {
|
||||||
* Every virtual machine must be destroyed in order to avoid memory leaks.
|
* Every virtual machine must be destroyed in order to avoid memory leaks.
|
||||||
*/
|
*/
|
||||||
PH7_PRIVATE sxi32 PH7_VmRelease(ph7_vm *pVm) {
|
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 */
|
/* Set the stale magic number */
|
||||||
pVm->nMagic = PH7_VM_STALE;
|
pVm->nMagic = PH7_VM_STALE;
|
||||||
/* Release the private memory subsystem */
|
/* Release the private memory subsystem */
|
||||||
|
|
Loading…
Reference in New Issue