Index: Source/NSProcessInfo.m =================================================================== RCS file: /cvsroot/gnustep/gnustep/core/base/Source/NSProcessInfo.m,v retrieving revision 1.88 diff -u -p -r1.88 NSProcessInfo.m --- Source/NSProcessInfo.m 29 Dec 2002 02:00:04 -0000 1.88 +++ Source/NSProcessInfo.m 11 Feb 2003 16:51:18 -0000 @@ -178,12 +178,21 @@ _gnu_process_args(int argc, char *argv[] { free(_gnu_arg_zero); } - _gnu_arg_zero = (char*)malloc(strlen(argv[0]) + 1); - strcpy(_gnu_arg_zero, argv[0]); + + if (argv) + { + _gnu_arg_zero = (char*)malloc(strlen(argv[0]) + 1); + strcpy(_gnu_arg_zero, argv[0]); + } + else + { + _gnu_arg_zero = (char*)malloc(1); + _gnu_arg_zero[0] = '\0'; + } /* Getting the process name */ IF_NO_GC(RELEASE(_gnu_processName)); - _gnu_processName = [[NSString stringWithCString: argv[0]] lastPathComponent]; + _gnu_processName = [[NSString stringWithCString: _gnu_arg_zero] lastPathComponent]; IF_NO_GC(RETAIN(_gnu_processName)); @@ -191,10 +200,15 @@ _gnu_process_args(int argc, char *argv[] { NSMutableSet *mySet; id obj_argv[argc]; - int added = 0; + int added = 1; mySet = [NSMutableSet new]; - for (i = 0; i < argc; i++) + + /* Copy the zero'th argument to the argument list */ + NSString *str = [NSString stringWithCString: _gnu_arg_zero]; + obj_argv[0] = str; + + for (i = 1; i < argc; i++) { NSString *str = [NSString stringWithCString: argv[i]]; @@ -203,6 +217,7 @@ _gnu_process_args(int argc, char *argv[] 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));