When @throw'ing form -forward:: method, the unwinding will stop at -forward
method with code == _URC_END_OF_STACK in gcc/unwind.inc:_Unwind_RaiseException

This code aborts while throwing. (compiled with -fobjc-exceptions of course)
-----------------------------------------------------------
#import <objc/Object.h>
#import <objc/objc-api.h>

@interface Thrower : Object
- forward: (SEL) s : (arglist_t) a;
@end

@implementation Thrower
- forward: (SEL) s : (arglist_t) a
{
        printf("Forwarding %s\n", sel_get_name(s));
        @throw [Object new];
}
@end


int
main()
{
        id t = [Thrower new];
        @try
        {
                [t doesnotexist];
        }
        @catch (id error)
        {
                printf("Got error class %s\n", [[error class] name]);
                [error free];
        }
}
-----------------------------------------------------

-- 
           Summary: Exceptions cannot be thrown from -forward::
           Product: gcc
           Version: 4.1.0
            Status: UNCONFIRMED
          Severity: normal
          Priority: P2
         Component: objc
        AssignedTo: unassigned at gcc dot gnu dot org
        ReportedBy: creep at desk dot pl
                CC: gcc-bugs at gcc dot gnu dot org


http://gcc.gnu.org/bugzilla/show_bug.cgi?id=22606

Reply via email to