From f856d3ec00a1581055fbcfbe63ee2fdfdc5479e0 Mon Sep 17 00:00:00 2001 From: CaS Date: Sat, 12 Oct 2002 16:12:25 +0000 Subject: [PATCH] Various minro tidyups git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/libs/base/trunk@14744 72102866-910b-0410-8b05-ffd578937521 --- ChangeLog | 6 ++++++ Source/NSProcessInfo.m | 25 ++++++++++++++++--------- Tools/autogsdoc.m | 14 ++++++++------ 3 files changed, 30 insertions(+), 15 deletions(-) diff --git a/ChangeLog b/ChangeLog index 3a7038e72..b05be0f8d 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,9 @@ +2002-10-12 Richard Frith-Macdonald + + * Source/NSProcessInfo.m: Make safe to reinitialise with args. + * Source/Additions/GSXML.m: Correct handling of atttribute values. + * Tools/autogsdoc.m: Initialise NSProcessInfo explicitly. + 2002-10-11 Richard Frith-Macdonald * Source/NSUserDefaults.m: ([-initWithContentsOfFile:]) check to see diff --git a/Source/NSProcessInfo.m b/Source/NSProcessInfo.m index 0a826dcf2..59da9f220 100644 --- a/Source/NSProcessInfo.m +++ b/Source/NSProcessInfo.m @@ -171,13 +171,18 @@ static NSMutableSet *_debug_set = nil; void _gnu_process_args(int argc, char *argv[], char *env[]) { - NSAutoreleasePool *arp = [NSAutoreleasePool new]; + CREATE_AUTORELEASE_POOL(arp); int i; + if (_gnu_arg_zero != 0) + { + free(_gnu_arg_zero); + } _gnu_arg_zero = (char*)malloc(strlen(argv[0]) + 1); strcpy(_gnu_arg_zero, argv[0]); /* Getting the process name */ + IF_NO_GC(RELEASE(_gnu_processName)); _gnu_processName = [[NSString stringWithCString: argv[0]] lastPathComponent]; IF_NO_GC(RETAIN(_gnu_processName)); @@ -198,7 +203,9 @@ _gnu_process_args(int argc, char *argv[], char *env[]) else obj_argv[added++] = str; } + IF_NO_GC(RELEASE(_gnu_arguments)); _gnu_arguments = [[NSArray alloc] initWithObjects: obj_argv count: added]; + IF_NO_GC(RELEASE(_debug_set)); _debug_set = mySet; } @@ -252,12 +259,13 @@ _gnu_process_args(int argc, char *argv[], char *env[]) #endif i++; } + IF_NO_GC(RELEASE(_gnu_environment)); _gnu_environment = [[NSDictionary alloc] initWithObjects: values forKeys: keys]; - [keys release]; - [values release]; + IF_NO_GC(RELEASE(keys)); + IF_NO_GC(RELEASE(values)); } - [arp release]; + IF_NO_GC(RELEASE(arp)); } #if !GS_FAKE_MAIN && (defined(HAVE_PROCFS) && defined(HAVE_LOAD_METHOD)) @@ -753,16 +761,15 @@ int main(int argc, char *argv[], char *env[]) /** * Fallback method. The developer must call this method to initialize * the NSProcessInfo system if none of the system-specific hacks to - * auto initiailise it are working. + * auto-initialize it are working. */ + (void) initializeWithArguments: (char**)argv count: (int)argc environment: (char**)env { - if (!_gnu_processName && !_gnu_arguments && !_gnu_environment) - { - _gnu_process_args(argc, argv, env); - } + [gnustep_global_lock lock]; + _gnu_process_args(argc, argv, env); + [gnustep_global_lock unlock]; } /** diff --git a/Tools/autogsdoc.m b/Tools/autogsdoc.m index 1f6d4bda5..cb8a037ef 100644 --- a/Tools/autogsdoc.m +++ b/Tools/autogsdoc.m @@ -492,13 +492,15 @@ main(int argc, char **argv, char **env) NSMutableArray *sFiles = nil; // Source NSMutableArray *gFiles = nil; // GSDOC NSMutableArray *hFiles = nil; // HTML - CREATE_AUTORELEASE_POOL(outer); - CREATE_AUTORELEASE_POOL(pool); +#if GS_WITH_GC == 0 + NSAutoreleasePool *outer = nil; + NSAutoreleasePool *pool = nil; +#endif - RELEASE(pool); - -#ifdef GS_PASS_ARGUMENTS [NSProcessInfo initializeWithArguments: argv count: argc environment: env]; + +#if GS_WITH_GC == 0 + outer = [NSAutoreleasePool new]; #endif #ifndef HAVE_LIBXML @@ -1251,7 +1253,7 @@ main(int argc, char **argv, char **env) file, gDate, hDate); } parser = [GSXMLParser parserWithContentsOfFile: gsdocfile]; - [parser substituteEntities: NO]; + [parser substituteEntities: YES]; [parser doValidityChecking: YES]; [parser keepBlanks: NO]; if ([parser parse] == NO)