This does indeed look like a runtime bug. I'll take a look. David
On 19 Nov 2013, at 01:33, Doug Warren <[email protected]> wrote: > 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 _______________________________________________ Gnustep-dev mailing list [email protected] https://lists.gnu.org/mailman/listinfo/gnustep-dev
