The patch is a simplest fix for crash when CheckObjCCircularContainer
applies to a message to a ’super’, e.g.:

@implementation Foo : NSMutableArray
- foo {
  [super addObject:nil];
}
@end


This is, probably, not a proper fix for the problem,
but initial patch wasn’t intended to apply checks to any kind
of subclassing, because it, imho, over-complicates implementation:

This particular problem touches subclassing from a class-cluster,
which means that the concrete subclass will have some backing storage, e.g.:

@implementation FootableArray : NSMutableArray
{
  NSMutableArray *_backingStorage;
}

- addObject:(id)object {
  [_backingStorage addObject:object];
}

@end

In this case even adding `self` to `self` would not lead to a circular 
container:

- foo {
  [self addObject:self]; // puts `self` into the `_backingStorage`
}

I would apply this patch as is and postpone a ‘proper and bullet-proof 
implementation’
when I, or somebody who is also interested, will have more time.

If there are any questions/suggestions/objections - let’s discuss them.
--
AlexDenisov
Software Engineer, http://lowlevelbits.org


Attachment: fix_circular_container_crash.patch
Description: Binary data

Attachment: signature.asc
Description: Message signed with OpenPGP using GPGMail

_______________________________________________
cfe-commits mailing list
cfe-commits@cs.uiuc.edu
http://lists.cs.uiuc.edu/mailman/listinfo/cfe-commits

Reply via email to