mirror of
https://github.com/corda/corda.git
synced 2024-12-29 09:18:58 +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) {
|
if (eht) {
|
||||||
for (unsigned i = 0; i < exceptionHandlerTableLength(t, eht); ++i) {
|
for (unsigned i = 0; i < exceptionHandlerTableLength(t, eht); ++i) {
|
||||||
ExceptionHandler* eh = exceptionHandlerTableBody(t, eht, i);
|
ExceptionHandler* eh = exceptionHandlerTableBody(t, eht, i);
|
||||||
object catchType =
|
if (frameIp(t, frame) >= exceptionHandlerStart(eh)
|
||||||
arrayBody(t, codePool(t, code), exceptionHandlerCatchType(eh) - 1);
|
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
|
if (catchType == 0 or
|
||||||
(objectClass(t, catchType)
|
(objectClass(t, catchType)
|
||||||
@ -4601,6 +4607,7 @@ run(Thread* t)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
for (object e = exception; e; e = throwableCause(t, e)) {
|
for (object e = exception; e; e = throwableCause(t, e)) {
|
||||||
if (e == exception) {
|
if (e == exception) {
|
||||||
|
Loading…
Reference in New Issue
Block a user