From 39d1a9f55f1ce4142ec29c482474c9650e1962af Mon Sep 17 00:00:00 2001 From: rfm Date: Tue, 6 Dec 2011 12:10:37 +0000 Subject: [PATCH] fix suggested vy Daniel Santos git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/libs/base/trunk@34253 72102866-910b-0410-8b05-ffd578937521 --- ChangeLog | 5 + Tools/AGSParser.m | 252 +++++++++++++++++++++++----------------------- 2 files changed, 129 insertions(+), 128 deletions(-) diff --git a/ChangeLog b/ChangeLog index 21b665769..1789ea7f9 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,8 @@ +2011-12-06 Richard Frith-Macdonald + + * Tools/AGSParser.m: Fix suggested by Daniel Santos (ifStack was + created with incorrect initial content). + 2011-12-06 Richard Frith-Macdonald * configure.ac: use pkg-config for libffi if/when available. diff --git a/Tools/AGSParser.m b/Tools/AGSParser.m index f141bf27e..313b5b6e7 100644 --- a/Tools/AGSParser.m +++ b/Tools/AGSParser.m @@ -175,7 +175,6 @@ in the returned dictionary. */ - (id) init { NSMutableCharacterSet *m; - NSMutableSet *s; m = [[NSCharacterSet controlCharacterSet] mutableCopy]; [m addCharactersInString: @" "]; @@ -194,9 +193,7 @@ in the returned dictionary. */ warn = [[NSUserDefaults standardUserDefaults] boolForKey: @"Warn"]; documentInstanceVariables = YES; ifStack = [[NSMutableArray alloc] initWithCapacity: 4]; - s = [NSMutableSet new]; - [ifStack addObject: s]; - RELEASE(s); + [ifStack addObject: [NSDictionary dictionary]]; return self; } @@ -3388,135 +3385,134 @@ fail: top = [[ifStack lastObject] mutableCopy]; while ((arg = [self parseIdentifier]) != nil) - { - BOOL openstep; - NSString *ver; - - if ([arg isEqual: @"OS_API_VERSION"] == YES) - { - openstep = YES; - if (hadOstep == YES) - { - [self log: @"multiple grouped OS_API_VERSION() calls"]; - return [self skipRemainderOfLine]; - } - hadOstep = YES; - [top removeObjectForKey: @"ovadd"]; - [top removeObjectForKey: @"ovdep"]; - [top removeObjectForKey: @"ovrem"]; - } - else if ([arg isEqual: @"GS_API_VERSION"] == YES) - { - openstep = NO; - if (hadGstep == YES) - { - [self log: @"multiple grouped GS_API_VERSION() calls"]; - return [self skipRemainderOfLine]; - } - hadGstep = YES; - [top removeObjectForKey: @"gvadd"]; - [top removeObjectForKey: @"gvdep"]; - [top removeObjectForKey: @"gvrem"]; - } - else - { - break; - } - - [self parseSpace: spaces]; - if (pos < length && buffer[pos] == '(') - { - pos++; - } - ver = [self parseVersion]; - if ([ver length] == 0) - { - ver = @"1.0.0"; - } - if (openstep) - { - [top setObject: ver forKey: @"ovadd"]; - } - else - { - [top setObject: ver forKey: @"gvadd"]; - } - - [self parseSpace: spaces]; - if (pos < length && buffer[pos] == ',') - { - pos++; - } - ver = [self parseVersion]; - if ([ver length] == 0) - { - ver = @"99.99.99"; - } - if ([ver isEqualToString: @"99.99.99"] == NO) - { - if (openstep) - { - [top setObject: ver forKey: @"ovrem"]; - } - else - { - [top setObject: ver forKey: @"gvrem"]; - } - } - - [self parseSpace: spaces]; - if (pos < length && buffer[pos] == ',') - { - pos++; - ver = [self parseVersion]; - if ([ver length] == 0) - { - ver = @"99.99.99"; - } - if ([ver isEqualToString: @"99.99.99"] == NO) - { - if (openstep) - { - [top setObject: ver forKey: @"ovdep"]; - } - else - { - [top setObject: ver forKey: @"gvdep"]; - } - } - [self parseSpace: spaces]; - } - - if (pos < length && buffer[pos] == ')') - { - pos++; - } - - [self parseSpace: spaces]; - if (pos < length-1 && buffer[pos] == '&' && buffer[pos+1] == '&') - { - pos += 2; - } - else - { - break; // may only join version macros with && - } - - } - [ifStack addObject: top]; - RELEASE(top); - } - else if ([directive hasPrefix: @"if"] == YES) { - BOOL isIfDef = [directive isEqual: @"ifdef"]; + BOOL openstep; + NSString *ver; + + if ([arg isEqual: @"OS_API_VERSION"] == YES) + { + openstep = YES; + if (hadOstep == YES) + { + [self log: @"multiple grouped OS_API_VERSION() calls"]; + return [self skipRemainderOfLine]; + } + hadOstep = YES; + [top removeObjectForKey: @"ovadd"]; + [top removeObjectForKey: @"ovdep"]; + [top removeObjectForKey: @"ovrem"]; + } + else if ([arg isEqual: @"GS_API_VERSION"] == YES) + { + openstep = NO; + if (hadGstep == YES) + { + [self log: @"multiple grouped GS_API_VERSION() calls"]; + return [self skipRemainderOfLine]; + } + hadGstep = YES; + [top removeObjectForKey: @"gvadd"]; + [top removeObjectForKey: @"gvdep"]; + [top removeObjectForKey: @"gvrem"]; + } + else + { + break; + } [self parseSpace: spaces]; - if (pos < length && buffer[pos] != '\n') + if (pos < length && buffer[pos] == '(') { - NSMutableDictionary *top; - NSString *arg; + pos++; + } + ver = [self parseVersion]; + if ([ver length] == 0) + { + ver = @"1.0.0"; + } + if (openstep) + { + [top setObject: ver forKey: @"ovadd"]; + } + else + { + [top setObject: ver forKey: @"gvadd"]; + } - top = [[ifStack lastObject] mutableCopy]; + [self parseSpace: spaces]; + if (pos < length && buffer[pos] == ',') + { + pos++; + } + ver = [self parseVersion]; + if ([ver length] == 0) + { + ver = @"99.99.99"; + } + if ([ver isEqualToString: @"99.99.99"] == NO) + { + if (openstep) + { + [top setObject: ver forKey: @"ovrem"]; + } + else + { + [top setObject: ver forKey: @"gvrem"]; + } + } + + [self parseSpace: spaces]; + if (pos < length && buffer[pos] == ',') + { + pos++; + ver = [self parseVersion]; + if ([ver length] == 0) + { + ver = @"99.99.99"; + } + if ([ver isEqualToString: @"99.99.99"] == NO) + { + if (openstep) + { + [top setObject: ver forKey: @"ovdep"]; + } + else + { + [top setObject: ver forKey: @"gvdep"]; + } + } + [self parseSpace: spaces]; + } + + if (pos < length && buffer[pos] == ')') + { + pos++; + } + + [self parseSpace: spaces]; + if (pos < length-1 && buffer[pos] == '&' && buffer[pos+1] == '&') + { + pos += 2; + } + else + { + break; // may only join version macros with && + } + } + [ifStack addObject: top]; + RELEASE(top); + } + else if ([directive hasPrefix: @"if"] == YES) + { + BOOL isIfDef = [directive isEqual: @"ifdef"]; + + [self parseSpace: spaces]; + if (pos < length && buffer[pos] != '\n') + { + NSMutableDictionary *top; + NSString *arg; + + top = [[ifStack lastObject] mutableCopy]; arg = [self parseIdentifier]; if ([arg isEqual: @"NO_GNUSTEP"] == YES) {