From 76e3788e770b8416e314e81804e2b525ba2f2318 Mon Sep 17 00:00:00 2001 From: CaS Date: Fri, 30 Nov 2001 07:30:37 +0000 Subject: [PATCH] Fix memory leak git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/libs/base/trunk@11571 72102866-910b-0410-8b05-ffd578937521 --- ChangeLog | 5 +++++ Source/NSScanner.m | 10 +++++----- 2 files changed, 10 insertions(+), 5 deletions(-) diff --git a/ChangeLog b/ChangeLog index 9ae0722c1..82e4e23c6 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,8 @@ +2001-11-29 Richard Frith-Macdonald + + * Source/NSScanner.m: Fix memory leak when initialised with something + other than a constant string. + 2001-11-28 Adam Fedor * Documentation/gsdoc/Base.gsdoc: Add NSLanguages summary. diff --git a/Source/NSScanner.m b/Source/NSScanner.m index 76b91aa27..303da6bf3 100644 --- a/Source/NSScanner.m +++ b/Source/NSScanner.m @@ -52,6 +52,7 @@ static Class GSUnicodeStringClass; static Class GSMutableStringClass; static Class GSPlaceholderStringClass; static Class NSConstantStringClass; +static id *_holder; static NSCharacterSet *defaultSkipSet; static SEL memSel; @@ -92,6 +93,7 @@ typedef struct { GSMutableStringClass = [GSMutableString class]; GSPlaceholderStringClass = [GSPlaceholderString class]; NSConstantStringClass = [NSString constantStringClass]; + _holder = (id)NSAllocateObject(GSPlaceholderStringClass, 0, 0); } } @@ -147,17 +149,16 @@ typedef struct { } else if (GSObjCIsKindOf(c, GSMutableStringClass) == YES) { - _string = (id)NSAllocateObject(GSPlaceholderStringClass, 0, 0); if (((ivars)aString)->_flags.wide == 1) { _isUnicode = YES; - _string = [_string initWithCharacters: ((ivars)aString)->_contents.u + _string = [_holder initWithCharacters: ((ivars)aString)->_contents.u length: ((ivars)aString)->_count]; } else { _isUnicode = NO; - _string = [_string initWithCString: ((ivars)aString)->_contents.c + _string = [_holder initWithCString: ((ivars)aString)->_contents.c length: ((ivars)aString)->_count]; } } @@ -169,8 +170,7 @@ typedef struct { else if ([aString isKindOfClass: NSStringClass]) { _isUnicode = YES; - _string = (id)NSAllocateObject(GSPlaceholderStringClass, 0, 0); - _string = [_string initWithString: aString]; + _string = [_holder initWithString: aString]; } else {