@@ -17,17 +17,32 @@ #include "config.h" #import "tlskey.h" +#ifdef OF_AMIGAOS +# import "OFMapTable.h" + +static const of_map_table_functions_t functions = { NULL }; +#endif + bool of_tlskey_new(of_tlskey_t *key) { #if defined(OF_HAVE_PTHREADS) return (pthread_key_create(key, NULL) == 0); #elif defined(OF_WINDOWS) return ((*key = TlsAlloc()) != TLS_OUT_OF_INDEXES); +#elif defined(OF_AMIGAOS) + @try { + *key = [[OFMapTable alloc] initWithKeyFunctions: functions + objectFunctions: functions]; + } @catch (id e) { + return false; + } + + return true; #endif } bool of_tlskey_free(of_tlskey_t key) @@ -34,7 +49,11 @@ { #if defined(OF_HAVE_PTHREADS) return (pthread_key_delete(key) == 0); #elif defined(OF_WINDOWS) return TlsFree(key); +#elif defined(OF_AMIGAOS) + [key release]; + + return true; #endif }