mirror of
https://github.com/gnustep/libs-base.git
synced 2025-04-25 01:31:08 +00:00
Fix fred's suggestions. Put guard and make more general method the one which is called.
This commit is contained in:
parent
9d252bd5b6
commit
be8980dfb4
2 changed files with 49 additions and 43 deletions
|
@ -88,6 +88,7 @@ extern "C" {
|
|||
+ (NSData*) archivedDataWithRootObject: (id)anObject;
|
||||
|
||||
|
||||
#if OS_API_VERSION(MAC_OS_X_VERSION_10_13,GS_API_LATEST)
|
||||
/**
|
||||
* Encodes anObject and returns the resulting data object. Allows
|
||||
* secure coding if specified. Returns an error if an object
|
||||
|
@ -96,6 +97,7 @@ extern "C" {
|
|||
+ (NSData *) archivedDataWithRootObject: (id)anObject
|
||||
requiringSecureCoding: (BOOL)requiresSecureCoding
|
||||
error: (NSError **)error;
|
||||
#endif
|
||||
|
||||
/**
|
||||
* Encodes anObject and writes the resulting data ti aPath.
|
||||
|
|
|
@ -430,56 +430,60 @@ static NSDictionary *makeReference(unsigned ref)
|
|||
|
||||
@implementation NSKeyedArchiver
|
||||
|
||||
+ (NSData *) archivedDataWithRootObject: (id)anObject
|
||||
requiringSecureCoding: (BOOL)requiresSecureCoding
|
||||
error: (NSError **)error
|
||||
{
|
||||
NSData *d = nil;
|
||||
|
||||
if (requiresSecureCoding == YES)
|
||||
{
|
||||
if (error != NULL)
|
||||
{
|
||||
*error = [NSError errorWithDomain: @"NSKeyedArchiver"
|
||||
code: 0
|
||||
userInfo: nil];
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
NSMutableData *m = nil;
|
||||
NSKeyedArchiver *a = nil;
|
||||
|
||||
error = NULL;
|
||||
NS_DURING
|
||||
{
|
||||
m = [[NSMutableData alloc] initWithCapacity: 10240];
|
||||
a = [[NSKeyedArchiver alloc] initForWritingWithMutableData: m];
|
||||
[a encodeObject: anObject forKey: @"root"];
|
||||
[a finishEncoding];
|
||||
d = [m copy];
|
||||
DESTROY(m);
|
||||
DESTROY(a);
|
||||
}
|
||||
NS_HANDLER
|
||||
{
|
||||
DESTROY(m);
|
||||
DESTROY(a);
|
||||
[localException raise];
|
||||
}
|
||||
NS_ENDHANDLER;
|
||||
}
|
||||
|
||||
return AUTORELEASE(d);
|
||||
}
|
||||
|
||||
/*
|
||||
* When I tried this on MacOS 10.3 it encoded the object with the key 'root',
|
||||
* so this implementation does the same.
|
||||
*/
|
||||
+ (NSData*) archivedDataWithRootObject: (id)anObject
|
||||
{
|
||||
NSMutableData *m = nil;
|
||||
NSKeyedArchiver *a = nil;
|
||||
NSData *d = nil;
|
||||
|
||||
NS_DURING
|
||||
{
|
||||
m = [[NSMutableData alloc] initWithCapacity: 10240];
|
||||
a = [[NSKeyedArchiver alloc] initForWritingWithMutableData: m];
|
||||
[a encodeObject: anObject forKey: @"root"];
|
||||
[a finishEncoding];
|
||||
d = [m copy];
|
||||
DESTROY(m);
|
||||
DESTROY(a);
|
||||
}
|
||||
NS_HANDLER
|
||||
{
|
||||
DESTROY(m);
|
||||
DESTROY(a);
|
||||
[localException raise];
|
||||
}
|
||||
NS_ENDHANDLER
|
||||
return AUTORELEASE(d);
|
||||
return [self archivedDataWithRootObject: anObject
|
||||
requiringSecureCoding: NO
|
||||
error: NULL];
|
||||
}
|
||||
|
||||
+ (NSData *) archivedDataWithRootObject: (id)anObject
|
||||
requiringSecureCoding: (BOOL)requiresSecureCoding
|
||||
error: (NSError **)error
|
||||
{
|
||||
NSData *data = nil;
|
||||
if (requiresSecureCoding == YES)
|
||||
{
|
||||
*error = [NSError errorWithDomain: @"NSKeyedArchiver"
|
||||
code: 0
|
||||
userInfo: nil];
|
||||
}
|
||||
else
|
||||
{
|
||||
error = NULL;
|
||||
data = [self archivedDataWithRootObject: anObject];
|
||||
}
|
||||
return data;
|
||||
}
|
||||
|
||||
|
||||
+ (BOOL) archiveRootObject: (id)anObject toFile: (NSString*)aPath
|
||||
{
|
||||
NSAutoreleasePool *pool = [NSAutoreleasePool new];
|
||||
|
|
Loading…
Reference in a new issue