mirror of
https://github.com/corda/corda.git
synced 2024-12-28 16:58:55 +00:00
exception handler selection bugfixes
This commit is contained in:
parent
d2ef4dabc4
commit
56467e61d7
11
src/vm.cpp
11
src/vm.cpp
@ -4584,8 +4584,14 @@ run(Thread* t)
|
||||
if (eht) {
|
||||
for (unsigned i = 0; i < exceptionHandlerTableLength(t, eht); ++i) {
|
||||
ExceptionHandler* eh = exceptionHandlerTableBody(t, eht, i);
|
||||
object catchType =
|
||||
arrayBody(t, codePool(t, code), exceptionHandlerCatchType(eh) - 1);
|
||||
if (frameIp(t, frame) >= exceptionHandlerStart(eh)
|
||||
and frameIp(t, frame) >= exceptionHandlerEnd(eh))
|
||||
{
|
||||
object catchType = 0;
|
||||
if (exceptionHandlerCatchType(eh)) {
|
||||
catchType = arrayBody
|
||||
(t, codePool(t, code), exceptionHandlerCatchType(eh) - 1);
|
||||
}
|
||||
|
||||
if (catchType == 0 or
|
||||
(objectClass(t, catchType)
|
||||
@ -4601,6 +4607,7 @@ run(Thread* t)
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
for (object e = exception; e; e = throwableCause(t, e)) {
|
||||
if (e == exception) {
|
||||
|
Loading…
Reference in New Issue
Block a user