Retain/Release and DO patches from Richard Frith-MacDonald

git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/libs/base/trunk@2571 72102866-910b-0410-8b05-ffd578937521
This commit is contained in:
fedor 1997-10-28 14:34:49 +00:00
parent 6a21926d00
commit d88b91f6bb
25 changed files with 697 additions and 134 deletions

View file

@ -320,7 +320,7 @@ extraRefCount (id anObject)
if (double_release_check_enabled)
{
unsigned release_count;
unsigned retain_count = extraRefCount(self);
unsigned retain_count = [self retainCount];
release_count = [autorelease_class autoreleaseCountForObject:self];
if (release_count > retain_count)
[NSException
@ -421,9 +421,9 @@ extraRefCount (id anObject)
if (double_release_check_enabled)
{
unsigned release_count;
unsigned retain_count = extraRefCount(self);
unsigned retain_count = [self retainCount];
release_count = [autorelease_class autoreleaseCountForObject:self];
if (release_count > retain_count)
if (release_count >= retain_count)
[NSException raise: NSGenericException
format: @"Release would release object too many times."];
}
@ -458,11 +458,7 @@ extraRefCount (id anObject)
- (unsigned) retainCount
{
unsigned release_count;
unsigned retain_count = extraRefCount(self) + 1;
release_count = [autorelease_class autoreleaseCountForObject:self];
return retain_count - release_count;
return extraRefCount(self) + 1;
}
+ (unsigned) retainCount