mirror of git://sourceware.org/git/glibc.git
htl: Make pthread_[gs]etspecific not check for key validity
Since __pthread_key_create might be concurrently reallocating the __pthread_key_destructors array, it's not safe to access it without the mutex held. Posix explicitly says we are allowed to prefer performance over error detection.
This commit is contained in:
parent
0fb8800029
commit
315c9e794a
|
|
@ -25,8 +25,7 @@ __pthread_getspecific (pthread_key_t key)
|
|||
{
|
||||
struct __pthread *self;
|
||||
|
||||
if (key < 0 || key >= __pthread_key_count
|
||||
|| __pthread_key_destructors[key] == PTHREAD_KEY_INVALID)
|
||||
if (key < 0 || key >= __pthread_key_count)
|
||||
return NULL;
|
||||
|
||||
self = _pthread_self ();
|
||||
|
|
|
|||
|
|
@ -25,8 +25,7 @@ __pthread_setspecific (pthread_key_t key, const void *value)
|
|||
{
|
||||
struct __pthread *self = _pthread_self ();
|
||||
|
||||
if (key < 0 || key >= __pthread_key_count
|
||||
|| __pthread_key_destructors[key] == PTHREAD_KEY_INVALID)
|
||||
if (key < 0 || key >= __pthread_key_count)
|
||||
return EINVAL;
|
||||
|
||||
if (key >= self->thread_specifics_size)
|
||||
|
|
|
|||
Loading…
Reference in New Issue