exception handler selection bugfixes

This commit is contained in:
Joel Dice 2007-07-04 20:44:01 -06:00
parent d2ef4dabc4
commit 56467e61d7

View File

@ -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) {