Hi Guys,
Was tracking a memory leak in an existing app and tracked it down to
objc_setassociatedobject not working as expected from the code being
developed for the Apple Runtime. The docs around objc_setassociatedobject
seem to imply it follows the Apple Runtime but this simple gtest will pass
on Apple but fail on libobjc/GNUStep Base:
static BOOL deallocCalled = NO;
static const char* objc_setAssociatedObjectKey =
"objc_setAssociatedObjectKey";
@interface NSMutableDictionary(setAssociatedObjectTest)
@end
@implementation NSMutableDictionary(setAssociatedObjectTest)
-(void) dealloc
{
deallocCalled = YES;
[super dealloc];
}
@end
TEST(objc_setAssociatedObject, AssociatedObjectsAreReleased)
{
@autoreleasepool {
NSObject* object = [[NSString alloc] init];
NSMutableDictionary *info = [NSMutableDictionary
dictionaryWithCapacity:1];
objc_setAssociatedObject(object, &objc_setAssociatedObjectKey,
info, OBJC_ASSOCIATION_RETAIN);
[object release];
}
ASSERT_TRUE(deallocCalled);
}
Adding calls to GSDebugAllocationList before/after the autorelease pool:
1 NSDataMalloc
1 GSMutableDictionary
Shows that the dictionary leaks.
Any thoughts?
_______________________________________________
Gnustep-dev mailing list
[email protected]
https://lists.gnu.org/mailman/listinfo/gnustep-dev