Index: src/OFThread.m ================================================================== --- src/OFThread.m +++ src/OFThread.m @@ -137,16 +137,16 @@ [oldObject release]; } + (id)objectForTLSKey: (OFTLSKey*)key { - return [[of_tlskey_get(key->key) retain] autorelease]; + return [[(id)of_tlskey_get(key->key) retain] autorelease]; } + (OFThread*)currentThread { - return [[of_tlskey_get(threadSelf) retain] autorelease]; + return [[(id)of_tlskey_get(threadSelf) retain] autorelease]; } + (void)sleepForTimeInterval: (double)seconds { if (seconds < 0) Index: src/threading.h ================================================================== --- src/threading.h +++ src/threading.h @@ -253,31 +253,23 @@ #elif defined(_WIN32) return ((*key = TlsAlloc()) != TLS_OUT_OF_INDEXES); #endif } -static OF_INLINE id +static OF_INLINE void* of_tlskey_get(of_tlskey_t key) { #if defined(OF_HAVE_PTHREADS) - void *ret = pthread_getspecific(key); + return pthread_getspecific(key); #elif defined(_WIN32) - void *ret = TlsGetValue(key); + return TlsGetValue(key); #endif - - /* NULL and nil might be different! */ - if (ret == NULL) - return nil; - - return (id)ret; } static OF_INLINE BOOL -of_tlskey_set(of_tlskey_t key, id obj) +of_tlskey_set(of_tlskey_t key, void *ptr) { - void *ptr = (obj != nil ? (void*)obj : NULL); - #if defined(OF_HAVE_PTHREADS) return !pthread_setspecific(key, ptr); #elif defined(_WIN32) return TlsSetValue(key, ptr); #endif