diff --git a/ChangeLog b/ChangeLog index 5efe54f33..8c42898d5 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,8 @@ +2001-02-21 Richard Frith-Macdonald + + * Source/NSString.m: Fix memory leak reported by thoran@free.fr + parsePlItem() + 2001-02-17 Nicola Pero * Source/GNUmakefile (PACKAGE_NAME): Fixed typo - was gnutep-base diff --git a/Source/NSString.m b/Source/NSString.m index 8275b1732..e54e2ae67 100644 --- a/Source/NSString.m +++ b/Source/NSString.m @@ -3805,12 +3805,14 @@ static id parsePlItem(pldata* pld) if (skipSpace(pld) == NO) { RELEASE(key); + RELEASE(dict); return nil; } if (pld->ptr[pld->pos] != '=') { pld->err = @"unexpected character (wanted '=')"; RELEASE(key); + RELEASE(dict); return nil; } pld->pos++; @@ -3818,12 +3820,14 @@ static id parsePlItem(pldata* pld) if (val == nil) { RELEASE(key); + RELEASE(dict); return nil; } if (skipSpace(pld) == NO) { RELEASE(key); RELEASE(val); + RELEASE(dict); return nil; } if (pld->ptr[pld->pos] == ';') @@ -3835,6 +3839,7 @@ static id parsePlItem(pldata* pld) pld->err = @"unexpected character (wanted ';' or '}')"; RELEASE(key); RELEASE(val); + RELEASE(dict); return nil; } (*plSet)(dict, @selector(setObject:forKey:), val, key); @@ -3865,11 +3870,13 @@ static id parsePlItem(pldata* pld) val = parsePlItem(pld); if (val == nil) { + RELEASE(array); return nil; } if (skipSpace(pld) == NO) { RELEASE(val); + RELEASE(array); return nil; } if (pld->ptr[pld->pos] == ',') @@ -3880,6 +3887,7 @@ static id parsePlItem(pldata* pld) { pld->err = @"unexpected character (wanted ',' or ')')"; RELEASE(val); + RELEASE(array); return nil; } (*plAdd)(array, @selector(addObject:), val);