Fix decoding of NSNull (bug #16456)

git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/libs/base/trunk@22833 72102866-910b-0410-8b05-ffd578937521
This commit is contained in:
Richard Frith-MacDonald 2006-04-28 07:43:09 +00:00
parent fbad4fe85f
commit 8a2b40d0de
2 changed files with 11 additions and 2 deletions

View file

@ -1,3 +1,7 @@
2006-04-28 Richard Frith-Macdonald <rfm@gnu.org>
* Source/NSKeyedUnarchiver.m: Fix decoding of NSNull objects.
2006-04-27 Richard Frith-Macdonald <rfm@gnu.org>
* Source/NSURL.m: Fix error unescaping uppercase hex digits.

View file

@ -45,6 +45,11 @@
#include <Foundation/NSKeyedArchiver.h>
#undef _IN_NSKEYEDUNARCHIVER_M
@interface NilMarker: NSObject
@end
@implementation NilMarker
@end
/**
* An unarchiving error has occurred.
*/
@ -247,7 +252,7 @@ static NSMapTable globalClassMap = 0;
if (obj == nil)
{
// Record NSNull marker for decoded object.
// Record NilMarker for decoded object.
o = GSIArrayItemAtIndex(_objMap, 0).obj;
GSIArraySetItemAtIndex(_objMap, (GSIArrayItem)o, index);
}
@ -772,7 +777,7 @@ static NSMapTable globalClassMap = 0;
count = [_objects count];
GSIArrayInitWithZoneAndCapacity(_objMap, _zone, count);
// Add marker for nil object
GSIArrayAddItem(_objMap, (GSIArrayItem)((id)[NSNull null]));
GSIArrayAddItem(_objMap, (GSIArrayItem)((id)[NilMarker class]));
// Add markers for unencoded objects.
for (i = 1; i < count; i++)
{