Merge pull request #10 from gunyarakun/fix-invalid-return
[cocotron.git] / objc / objc_tls.c
blobfdc508a1650f5a9239b9f9a0486091838363962c
1 #import "objc_tls.h"
2 #import <objc/objc_arc.h>
3 #import <pthread.h>
5 static void objc_tls_free(void *tls) {
8 static pthread_key_t objc_tls_key;
10 static void createKey() {
11 pthread_key_create(&objc_tls_key, objc_tls_free);
13 objc_tls *tls = calloc(1, sizeof(objc_tls));
15 pthread_setspecific(objc_tls_key, tls);
18 objc_tls *objc_tlsCurrent() {
19 static pthread_once_t createKeyOnce = PTHREAD_ONCE_INIT;
21 pthread_once(&createKeyOnce, createKey);
23 return pthread_getspecific(objc_tls_key);