diff options
Diffstat (limited to 'src/thread/pthread_key_create.c')
-rw-r--r-- | src/thread/pthread_key_create.c | 10 |
1 files changed, 4 insertions, 6 deletions
diff --git a/src/thread/pthread_key_create.c b/src/thread/pthread_key_create.c index 198ae56e..a78e507a 100644 --- a/src/thread/pthread_key_create.c +++ b/src/thread/pthread_key_create.c @@ -13,13 +13,11 @@ int __pthread_key_create(pthread_key_t *k, void (*dtor)(void *)) { unsigned i = (uintptr_t)&k / 16 % PTHREAD_KEYS_MAX; unsigned j = i; + pthread_t self = __pthread_self(); - if (libc.has_thread_pointer) { - pthread_t self = __pthread_self(); - /* This can only happen in the main thread before - * pthread_create has been called. */ - if (!self->tsd) self->tsd = __pthread_tsd_main; - } + /* This can only happen in the main thread before + * pthread_create has been called. */ + if (!self->tsd) self->tsd = __pthread_tsd_main; if (!dtor) dtor = nodtor; do { |