Index: src/OFDate.m ================================================================== --- src/OFDate.m +++ src/OFDate.m @@ -652,27 +652,27 @@ } - (OFDate *)earlierDate: (OFDate *)otherDate { if (otherDate == nil) - return [[self retain] autorelease]; + return self; if ([self compare: otherDate] == OF_ORDERED_DESCENDING) - return [[otherDate retain] autorelease]; + return otherDate; - return [[self retain] autorelease]; + return self; } - (OFDate *)laterDate: (OFDate *)otherDate { if (otherDate == nil) - return [[self retain] autorelease]; + return self; if ([self compare: otherDate] == OF_ORDERED_ASCENDING) - return [[otherDate retain] autorelease]; + return otherDate; - return [[self retain] autorelease]; + return self; } - (of_time_interval_t)timeIntervalSince1970 { return _seconds; Index: src/OFINIFile.m ================================================================== --- src/OFINIFile.m +++ src/OFINIFile.m @@ -106,29 +106,21 @@ - (OFINICategory *)categoryForName: (OFString *)name { void *pool = objc_autoreleasePoolPush(); OFINICategory *category; - for (category in _categories) { - if ([[category name] isEqual: name]) { - OFINICategory *ret = [category retain]; - - objc_autoreleasePoolPop(pool); - - return [ret autorelease]; - } - } + for (category in _categories) + if ([[category name] isEqual: name]) + return category; category = [[[OFINICategory alloc] OF_init] autorelease]; [category setName: name]; [_categories addObject: category]; - [category retain]; - objc_autoreleasePoolPop(pool); - return [category autorelease]; + return category; } - (void)OF_parseFile: (OFString *)path encoding: (of_string_encoding_t)encoding { Index: src/OFRunLoop.m ================================================================== --- src/OFRunLoop.m +++ src/OFRunLoop.m @@ -335,11 +335,11 @@ #endif @implementation OFRunLoop + (OFRunLoop *)mainRunLoop { - return [[mainRunLoop retain] autorelease]; + return mainRunLoop; } + (OFRunLoop *)currentRunLoop { #ifdef OF_HAVE_THREADS Index: src/OFSystemInfo.m ================================================================== --- src/OFSystemInfo.m +++ src/OFSystemInfo.m @@ -144,14 +144,12 @@ } + (OFString *)userDataPath { #if defined(OF_MACOS) || defined(OF_IOS) - void *pool = objc_autoreleasePoolPush(); char pathC[PATH_MAX]; OFMutableString *path; - OFString *home; # ifdef HAVE_SYSDIR_START_SEARCH_PATH_ENUMERATION sysdir_search_path_enumeration_state state; state = sysdir_start_search_path_enumeration( @@ -170,10 +168,11 @@ # endif path = [OFMutableString stringWithUTF8String: pathC]; if ([path hasPrefix: @"~"]) { OFDictionary *env = [OFApplication environment]; + OFString *home; if ((home = [env objectForKey: @"HOME"]) == nil) @throw [OFNotImplementedException exceptionWithSelector: _cmd object: self]; @@ -182,25 +181,20 @@ [path prependString: home]; } [path makeImmutable]; - [path retain]; - objc_autoreleasePoolPop(pool); - return [path autorelease]; + return path; #elif defined(OF_WINDOWS) - void *pool = objc_autoreleasePoolPush(); OFDictionary *env = [OFApplication environment]; OFString *appData; if ((appData = [env objectForKey: @"APPDATA"]) == nil) @throw [OFNotImplementedException exceptionWithSelector: _cmd object: self]; - [appData retain]; - objc_autoreleasePoolPop(pool); - return [appData autorelease]; + return appData; #elif defined(OF_HAIKU) char pathC[PATH_MAX]; if (find_directory(B_USER_SETTINGS_DIRECTORY, 0, false, pathC, PATH_MAX) != B_OK) @@ -207,41 +201,38 @@ @throw [OFNotImplementedException exceptionWithSelector: _cmd object: self]; return [OFString stringWithUTF8String: pathC]; #else - void *pool = objc_autoreleasePoolPush(); OFDictionary *env = [OFApplication environment]; OFString *var; + void *pool; if ((var = [env objectForKey: @"XDG_DATA_HOME"]) != nil && - [var length] > 0) { - [var retain]; - objc_autoreleasePoolPop(pool); - return [var autorelease]; - } + [var length] > 0) + return var; if ((var = [env objectForKey: @"HOME"]) == nil) @throw [OFNotImplementedException exceptionWithSelector: _cmd object: self]; - var = [OFString pathWithComponents: [OFArray arrayWithObjects: - var, @".local", @"share", nil]]; + pool = objc_autoreleasePoolPush(); - [var retain]; + var = [[OFString pathWithComponents: [OFArray arrayWithObjects: + var, @".local", @"share", nil]] retain]; + objc_autoreleasePoolPop(pool); + return [var autorelease]; #endif } + (OFString *)userConfigPath { #if defined(OF_MACOS) || defined(OF_IOS) - void *pool = objc_autoreleasePoolPush(); char pathC[PATH_MAX]; OFMutableString *path; - OFString *home; # ifdef HAVE_SYSDIR_START_SEARCH_PATH_ENUMERATION sysdir_search_path_enumeration_state state; state = sysdir_start_search_path_enumeration( @@ -260,10 +251,11 @@ # endif path = [OFMutableString stringWithUTF8String: pathC]; if ([path hasPrefix: @"~"]) { OFDictionary *env = [OFApplication environment]; + OFString *home; if ((home = [env objectForKey: @"HOME"]) == nil) @throw [OFNotImplementedException exceptionWithSelector: _cmd object: self]; @@ -274,25 +266,20 @@ [path appendString: @"/Preferences"]; [path makeImmutable]; - [path retain]; - objc_autoreleasePoolPop(pool); - return [path autorelease]; + return path; #elif defined(OF_WINDOWS) - void *pool = objc_autoreleasePoolPush(); OFDictionary *env = [OFApplication environment]; OFString *appData; if ((appData = [env objectForKey: @"APPDATA"]) == nil) @throw [OFNotImplementedException exceptionWithSelector: _cmd object: self]; - [appData retain]; - objc_autoreleasePoolPop(pool); - return [appData autorelease]; + return appData; #elif defined(OF_HAIKU) char pathC[PATH_MAX]; if (find_directory(B_USER_SETTINGS_DIRECTORY, 0, false, pathC, PATH_MAX) != B_OK) @@ -299,30 +286,22 @@ @throw [OFNotImplementedException exceptionWithSelector: _cmd object: self]; return [OFString stringWithUTF8String: pathC]; #else - void *pool = objc_autoreleasePoolPush(); OFDictionary *env = [OFApplication environment]; OFString *var; if ((var = [env objectForKey: @"XDG_CONFIG_HOME"]) != nil && - [var length] > 0) { - [var retain]; - objc_autoreleasePoolPop(pool); - return [var autorelease]; - } + [var length] > 0) + return var; if ((var = [env objectForKey: @"HOME"]) == nil) @throw [OFNotImplementedException exceptionWithSelector: _cmd object: self]; - var = [var stringByAppendingPathComponent: @".config"]; - - [var retain]; - objc_autoreleasePoolPop(pool); - return [var autorelease]; + return [var stringByAppendingPathComponent: @".config"]; #endif } + (OFString *)CPUVendor { @@ -401,9 +380,9 @@ if (sysctl(name, 2, &value, &length, NULL, 0) == 0) return value; # endif - return 0; + return false; } #endif @end Index: src/OFTCPSocket.m ================================================================== --- src/OFTCPSocket.m +++ src/OFTCPSocket.m @@ -207,11 +207,11 @@ [old release]; } + (OFString *)SOCKS5Host { - return [[defaultSOCKS5Host copy] autorelease]; + return defaultSOCKS5Host; } + (void)setSOCKS5Port: (uint16_t)port { defaultSOCKS5Port = port; Index: src/OFTarArchive.m ================================================================== --- src/OFTarArchive.m +++ src/OFTarArchive.m @@ -107,8 +107,8 @@ _lastReturnedEntry = [[OFTarArchiveEntry alloc] OF_initWithHeader: buffer.c stream: _stream]; - return [[_lastReturnedEntry retain] autorelease]; + return _lastReturnedEntry; } @end Index: src/OFThread.h ================================================================== --- src/OFThread.h +++ src/OFThread.h @@ -256,9 +256,11 @@ * @note This has to be set before the thread is started! * * @param stackSize The stack size for the thread */ - (void)setStackSize: (size_t)stackSize; +#else +- init OF_UNAVAILABLE; #endif @end OF_ASSUME_NONNULL_END Index: src/OFThread.m ================================================================== --- src/OFThread.m +++ src/OFThread.m @@ -383,11 +383,11 @@ if (_runLoop == nil) _runLoop = [[OFRunLoop alloc] init]; } # endif - return [[_runLoop retain] autorelease]; + return _runLoop; } - (OFString *)name { return [[_name copy] autorelease]; Index: src/OFTimer.m ================================================================== --- src/OFTimer.m +++ src/OFTimer.m @@ -410,11 +410,11 @@ objc_autoreleasePoolPop(pool); } - (OFDate *)fireDate { - return [[_fireDate copy] autorelease]; + return _fireDate; } - (void)setFireDate: (OFDate *)fireDate { [self retain]; Index: src/OFXMLElement.m ================================================================== --- src/OFXMLElement.m +++ src/OFXMLElement.m @@ -791,11 +791,11 @@ - (OFXMLAttribute *)attributeForName: (OFString *)attributeName { for (OFXMLAttribute *attribute in _attributes) if (attribute->_namespace == nil && [attribute->_name isEqual: attributeName]) - return [[attribute retain] autorelease]; + return attribute; return nil; } - (OFXMLAttribute *)attributeForName: (OFString *)attributeName @@ -805,11 +805,11 @@ return [self attributeForName: attributeName]; for (OFXMLAttribute *attribute in _attributes) if ([attribute->_namespace isEqual: attributeNS] && [attribute->_name isEqual: attributeName]) - return [[attribute retain] autorelease]; + return attribute; return nil; } - (void)removeAttributeForName: (OFString *)attributeName Index: src/OFZIPArchive.m ================================================================== --- src/OFZIPArchive.m +++ src/OFZIPArchive.m @@ -362,11 +362,11 @@ initWithStream: _stream localFileHeader: localFileHeader]; objc_autoreleasePoolPop(pool); - return [[_lastReturnedStream retain] autorelease]; + return _lastReturnedStream; } @end @implementation OFZIPArchive_LocalFileHeader - initWithStream: (OFStream *)stream Index: src/runtime/runtime.h ================================================================== --- src/runtime/runtime.h +++ src/runtime/runtime.h @@ -227,14 +227,10 @@ extern bool protocol_conformsToProtocol(Protocol *, Protocol *); extern void objc_exit(void); extern objc_uncaught_exception_handler objc_setUncaughtExceptionHandler( objc_uncaught_exception_handler); extern void objc_setForwardHandler(IMP, IMP); -extern id objc_autorelease(id); -extern void *objc_autoreleasePoolPush(void); -extern void objc_autoreleasePoolPop(void *); -extern id _objc_rootAutorelease(id); extern void objc_zero_weak_references(id); /* * Used by the compiler, but can also be called manually. *