From 684974fbfc70dc49e92a65d00b08d6f921a4b203 Mon Sep 17 00:00:00 2001 From: rfm Date: Sun, 13 Aug 2006 11:25:13 +0000 Subject: [PATCH] fix unarchiving bug and tidy git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/libs/base/trunk@23275 72102866-910b-0410-8b05-ffd578937521 --- ChangeLog | 1 + Source/GSArray.m | 5 +++-- Source/NSArchiver.m | 3 ++- Source/NSKeyedUnarchiver.m | 6 ++---- Source/NSTask.m | 3 ++- 5 files changed, 10 insertions(+), 8 deletions(-) diff --git a/ChangeLog b/ChangeLog index 5086fce11..46d22f80c 100644 --- a/ChangeLog +++ b/ChangeLog @@ -7,6 +7,7 @@ given a bad position. ([compare:]) fix to match MacOS-X * Source/NSObject.m: implement CRASH_ON_ZOMBIE * Documentation/Base.gsdoc: document it. + * Source/NSArray.m: Fix error in decoding from keyed archive. 2006-08-12 Richard Frith-Macdonald diff --git a/Source/GSArray.m b/Source/GSArray.m index cbaaa8e82..b4a9ec3b4 100644 --- a/Source/GSArray.m +++ b/Source/GSArray.m @@ -1045,7 +1045,7 @@ static Class GSInlineArrayClass; NSArray *array = [(NSKeyedUnarchiver*)aCoder _decodeArrayOfObjectsForKey: @"NS.objects"]; - return array; + return RETAIN(array); } else { @@ -1053,7 +1053,8 @@ static Class GSInlineArrayClass; unsigned c; [aCoder decodeValueOfObjCType: @encode(unsigned) at: &c]; - a = (id)NSAllocateObject(GSInlineArrayClass, sizeof(id)*c, GSObjCZone(self)); + a = (id)NSAllocateObject(GSInlineArrayClass, + sizeof(id)*c, GSObjCZone(self)); a->_contents_array = (id*)&a[1]; if (c > 0) { diff --git a/Source/NSArchiver.m b/Source/NSArchiver.m index 4a8b89ba8..5a6f6f179 100644 --- a/Source/NSArchiver.m +++ b/Source/NSArchiver.m @@ -18,7 +18,8 @@ You should have received a copy of the GNU Library General Public License along with this library; if not, write to the Free - Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02111 USA. + Software Foundation, Inc., 51 Franklin Street, Fifth Floor, + Boston, MA 02111 USA. NSArchiver class reference $Date$ $Revision$ diff --git a/Source/NSKeyedUnarchiver.m b/Source/NSKeyedUnarchiver.m index 58b0e7e25..a4b20b18b 100644 --- a/Source/NSKeyedUnarchiver.m +++ b/Source/NSKeyedUnarchiver.m @@ -312,6 +312,7 @@ static NSMapTable globalClassMap = 0; NS_HANDLER { DESTROY(u); + DESTROY(o); [localException raise]; } NS_ENDHANDLER @@ -323,12 +324,9 @@ static NSMapTable globalClassMap = 0; NSData *d; id o; - // CREATE_AUTORELEASE_POOL(pool); d = [NSData dataWithContentsOfFile: aPath]; o = [self unarchiveObjectWithData: d]; - // RETAIN(o); - // RELEASE(pool); - return AUTORELEASE(o); + return o; } - (BOOL) allowsKeyedCoding diff --git a/Source/NSTask.m b/Source/NSTask.m index e8137e95b..d98f76d51 100644 --- a/Source/NSTask.m +++ b/Source/NSTask.m @@ -1109,7 +1109,7 @@ quotedFromString(NSString *aString) [args appendString: quotedFromString(arg)]; } -NSLog(@"ARGS: %@", args); +NSLog(@"ARGS: '%@'", args); w_args = NSZoneMalloc(NSDefaultMallocZone(), sizeof(wchar_t) * ([args length] + 1)); [args getCharacters: (unichar*)w_args]; @@ -1198,6 +1198,7 @@ NSLog(@"ARGS: %@", args); NULL, /* thread attrs */ 1, /* inherit handles */ CREATE_NO_WINDOW|CREATE_UNICODE_ENVIRONMENT, /* creation flags */ + //CREATE_UNICODE_ENVIRONMENT, /* creation flags */ envp, /* env block */ (const unichar*)[[self currentDirectoryPath] fileSystemRepresentation], &start_info,