Differences From Artifact [d79be2163d]:
- File src/runtime/exception.m — part of check-in [813c00ccf0] at 2013-01-09 22:24:47 on branch trunk — Update copyright. (user: js, size: 14286) [annotate] [blame] [check-ins using]
To Artifact [375c6e97c6]:
- File
src/runtime/exception.m
— part of check-in
[ebaf70c292]
at
2013-01-13 16:10:24
on branch trunk
— exception.m: Handle empty class names.
m68k seems to use an empty class name instead of NULL. (user: js, size: 14372) [annotate] [blame] [check-ins using]
︙ | ︙ | |||
412 413 414 415 416 417 418 419 420 421 422 423 424 425 | */ actionrecords = ptr; displacement = (intptr_t)read_sleb128(&ptr); actionrecords += displacement; if (filter > 0 && !(actions & _UA_FORCE_UNWIND) && !foreign) { Class class; uintptr_t c; const uint8_t *tmp; #if defined(__arm__) || defined(__ARM__) tmp = lsda->typestable - (filter * 4); c = *(uintptr_t*)(void*)tmp; | > | 412 413 414 415 416 417 418 419 420 421 422 423 424 425 426 | */ actionrecords = ptr; displacement = (intptr_t)read_sleb128(&ptr); actionrecords += displacement; if (filter > 0 && !(actions & _UA_FORCE_UNWIND) && !foreign) { Class class; const char *className; uintptr_t c; const uint8_t *tmp; #if defined(__arm__) || defined(__ARM__) tmp = lsda->typestable - (filter * 4); c = *(uintptr_t*)(void*)tmp; |
︙ | ︙ | |||
433 434 435 436 437 438 439 | i = filter * size_for_encoding(lsda->typestable_enc); tmp = lsda->typestable - i; c = (uintptr_t)read_value(lsda->typestable_enc, &tmp); c = (uintptr_t)resolve_value(c, lsda->typestable_enc, lsda->typestable - i, lsda->typestable_base); #endif | > | > | | 434 435 436 437 438 439 440 441 442 443 444 445 446 447 448 449 450 451 | i = filter * size_for_encoding(lsda->typestable_enc); tmp = lsda->typestable - i; c = (uintptr_t)read_value(lsda->typestable_enc, &tmp); c = (uintptr_t)resolve_value(c, lsda->typestable_enc, lsda->typestable - i, lsda->typestable_base); #endif className = (const char*)c; if (className != NULL && *className != '\0') class = objc_getRequiredClass(className); else class = Nil; if (class_matches(class, e->object)) { *filtervalue = filter; return HANDLER_FOUND; } |
︙ | ︙ |