From 141bc74c1f262bb3e8616f4c24b39cec82ca662c Mon Sep 17 00:00:00 2001 From: rfm Date: Mon, 8 Dec 2008 09:08:05 +0000 Subject: [PATCH] Update and fix for bug #25004 git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/libs/base/trunk@27257 72102866-910b-0410-8b05-ffd578937521 --- ChangeLog | 12 ++++++++++-- Headers/Foundation/NSCoder.h | 2 +- Source/NSCoder.m | 6 ++---- Source/NSKeyedUnarchiver.m | 4 ++++ Source/NSUnarchiver.m | 22 +++++++++++----------- 5 files changed, 28 insertions(+), 18 deletions(-) diff --git a/ChangeLog b/ChangeLog index ce36e6d62..b825ffe93 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,7 +1,15 @@ +2008-12-08 Richard Frith-Macdonald + + * Source/NSKeyedUnarchiver.m: ([versionForClassName:]) implement + * Source/NSUnarchiver.m: + * Source/NSCoder.m: + * Headers/Foundation/NSCoder.h: + Update method to return NSInteger. + 2008-12-07 Adam Fedor - * configure.ac: Add custom objc library check from gnustep-make (So we can find - libobjc in LOCAL domain). + * configure.ac: Add custom objc library check from gnustep-make + (So we can find libobjc in LOCAL domain). 2008-12-07 Richard Frith-Macdonald diff --git a/Headers/Foundation/NSCoder.h b/Headers/Foundation/NSCoder.h index 81be12e78..68ab08173 100644 --- a/Headers/Foundation/NSCoder.h +++ b/Headers/Foundation/NSCoder.h @@ -222,7 +222,7 @@ extern "C" { * class (decoded). Version comes from [NSObject -getVersion]. * */ -- (unsigned int) versionForClassName: (NSString*)className; +- (NSInteger) versionForClassName: (NSString*)className; #if OS_API_VERSION(GS_API_MACOSX, GS_API_LATEST) /* diff --git a/Source/NSCoder.m b/Source/NSCoder.m index 39771ac28..1122b0880 100644 --- a/Source/NSCoder.m +++ b/Source/NSCoder.m @@ -65,10 +65,10 @@ return nil; } -- (unsigned int) versionForClassName: (NSString*)className +- (NSInteger) versionForClassName: (NSString*)className { [self subclassResponsibility: _cmd]; - return NSNotFound; + return (NSInteger)NSNotFound; } // Encoding Data @@ -293,8 +293,6 @@ - (unsigned int) systemVersion { - //PENDING(ABR)- should probably mult major version by 1000, not 100, since, - // e.g., 2.0.0 is going to be <1000 return (((GNUSTEP_BASE_MAJOR_VERSION * 100) + GNUSTEP_BASE_MINOR_VERSION) * 100) + GNUSTEP_BASE_SUBMINOR_VERSION; } diff --git a/Source/NSKeyedUnarchiver.m b/Source/NSKeyedUnarchiver.m index 9e050b4e9..bcf6c2633 100644 --- a/Source/NSKeyedUnarchiver.m +++ b/Source/NSKeyedUnarchiver.m @@ -828,6 +828,10 @@ static NSMapTable globalClassMap = 0; _delegate = delegate; // Not retained. } +- (NSInteger) versionForClassName: (NSString*)className +{ + return 0; // Not used for keyed unarchiving. +} @end @implementation NSObject (NSKeyedUnarchiverDelegate) diff --git a/Source/NSUnarchiver.m b/Source/NSUnarchiver.m index 8434e8770..ac0632fa9 100644 --- a/Source/NSUnarchiver.m +++ b/Source/NSUnarchiver.m @@ -283,7 +283,7 @@ static NSMutableDictionary *clsDict; /* Class information */ @interface NSUnarchiverObjectInfo : NSUnarchiverClassInfo { @public - unsigned version; + NSInteger version; NSUnarchiverClassInfo *overrides; } @end @@ -747,17 +747,17 @@ static Class NSDataMallocClass; classInfo = [objDict objectForKey: className]; if (classInfo == nil) { - classInfo = [NSUnarchiverObjectInfo - newWithName: className]; + classInfo = [NSUnarchiverObjectInfo newWithName: className]; c = NSClassFromString(className); /* - * Show a warning, if the class name that's being used to build the - * class causes NSClassFromString to return nil. This means that the - * class is unknown to the runtime. + * Show a warning, if the class name that's being used to + * build the class causes NSClassFromString to return nil. + * This means that the class is unknown to the runtime. */ - if(c == nil) + if (c == nil) { - NSLog(@"Got nil when trying to unarchive class %s",className); + NSLog(@"Got nil when trying to unarchive class %s", + className); } [classInfo mapToClass: c withName: className]; [objDict setObject: classInfo forKey: className]; @@ -768,7 +768,7 @@ static Class NSDataMallocClass; c = classInfo->class; } RELEASE(className); - classInfo->version = cver; + classInfo->version = (NSInteger)cver; GSIArrayAddItem(clsMap, (GSIArrayItem)((id)classInfo)); *(Class*)address = mapClassObject(classInfo); /* @@ -1300,14 +1300,14 @@ static Class NSDataMallocClass; format: @"object to be replaced does not exist"]; } -- (unsigned) versionForClassName: (NSString*)className +- (NSInteger) versionForClassName: (NSString*)className { NSUnarchiverObjectInfo *info; info = [objDict objectForKey: className]; if (info == nil) { - return NSNotFound; + return (NSInteger)NSNotFound; } return info->version; }