@@ -22,22 +22,22 @@ #import "OFURL.h" #import "OFString.h" #import "OFArray.h" #import "OFXMLElement.h" -#import "OFAutoreleasePool.h" #import "OFInvalidArgumentException.h" #import "OFInvalidFormatException.h" #import "OFOutOfMemoryException.h" +#import "autorelease.h" #import "macros.h" static OF_INLINE OFString* resolve_relative_path(OFString *path) { - OFAutoreleasePool *pool = [[OFAutoreleasePool alloc] init]; + void *pool = objc_autoreleasePoolPush(); OFMutableArray *array; OFString *ret; BOOL done = NO; array = [[[path componentsSeparatedByString: @"/"] mutableCopy] @@ -70,11 +70,11 @@ } } ret = [[array componentsJoinedByString: @"/"] retain]; - [pool release]; + objc_autoreleasePoolPop(pool); return [ret autorelease]; } @implementation OFURL @@ -146,29 +146,29 @@ UTF8String = tmp2; } if ((tmp2 = strchr(UTF8String, ':')) != NULL) { - OFAutoreleasePool *pool; + void *pool; OFString *portString; *tmp2 = '\0'; tmp2++; host = [[OFString alloc] initWithUTF8String: UTF8String]; - pool = [[OFAutoreleasePool alloc] init]; + pool = objc_autoreleasePoolPush(); portString = [OFString stringWithUTF8String: tmp2]; if ([portString decimalValue] > 65535) @throw [OFInvalidFormatException exceptionWithClass: [self class]]; port = [portString decimalValue]; - [pool release]; + objc_autoreleasePoolPop(pool); } else { host = [[OFString alloc] initWithUTF8String: UTF8String]; if ([scheme isEqual: @"http"]) @@ -260,14 +260,14 @@ if (*UTF8String == '/') path = [[OFString alloc] initWithUTF8String: UTF8String]; else { - OFAutoreleasePool *pool; + void *pool; OFString *s; - pool = [[OFAutoreleasePool alloc] init]; + pool = objc_autoreleasePoolPush(); if ([URL->path hasSuffix: @"/"]) s = [OFString stringWithFormat: @"%@%s", URL->path, UTF8String]; @@ -276,11 +276,11 @@ URL->path, UTF8String]; path = [resolve_relative_path(s) copy]; - [pool release]; + objc_autoreleasePoolPop(pool); } } @catch (id e) { [self release]; @throw e; } @finally { @@ -291,21 +291,21 @@ } - initWithSerialization: (OFXMLElement*)element { @try { - OFAutoreleasePool *pool = [[OFAutoreleasePool alloc] init]; + void *pool = objc_autoreleasePoolPush(); if (![[element name] isEqual: [self className]] || ![[element namespace] isEqual: OF_SERIALIZATION_NS]) @throw [OFInvalidArgumentException exceptionWithClass: [self class] selector: _cmd]; self = [self initWithString: [element stringValue]]; - [pool release]; + objc_autoreleasePoolPop(pool); } @catch (id e) { [self release]; @throw e; } @@ -552,19 +552,19 @@ return [self string]; } - (OFXMLElement*)XMLElementBySerializing { - OFAutoreleasePool *pool = [[OFAutoreleasePool alloc] init]; + void *pool = objc_autoreleasePoolPush(); OFXMLElement *element; element = [OFXMLElement elementWithName: [self className] namespace: OF_SERIALIZATION_NS stringValue: [self string]]; [element retain]; - [pool release]; - [element autorelease]; + + objc_autoreleasePoolPop(pool); - return element; + return [element autorelease]; } @end