Execute the 'finally' block when to exception has been thrown.
All checks were successful
The build was successful.
All checks were successful
The build was successful.
This commit is contained in:
parent
384b057c93
commit
4267bb2f26
10
engine/vm.c
10
engine/vm.c
|
@ -3909,7 +3909,15 @@ static sxi32 VmByteCodeExec(
|
||||||
ph7_exception **apException;
|
ph7_exception **apException;
|
||||||
/* Pop the loaded exception */
|
/* Pop the loaded exception */
|
||||||
apException = (ph7_exception **)SySetBasePtr(&pVm->aException);
|
apException = (ph7_exception **)SySetBasePtr(&pVm->aException);
|
||||||
if(pException == apException[SySetUsed(&pVm->aException) - 1]) {
|
if(pException && pException == apException[SySetUsed(&pVm->aException) - 1]) {
|
||||||
|
if(SySetUsed(&pException->sFinally)) {
|
||||||
|
/* Execute the 'finally' block */
|
||||||
|
rc = VmExecFinallyBlock(&(*pVm), pException);
|
||||||
|
if(rc == SXERR_ABORT) {
|
||||||
|
/* Abort processing immediately */
|
||||||
|
goto Abort;
|
||||||
|
}
|
||||||
|
}
|
||||||
(void)SySetPop(&pVm->aException);
|
(void)SySetPop(&pVm->aException);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue
Block a user