summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--ChangeLog2
-rw-r--r--tsd.c6
2 files changed, 5 insertions, 3 deletions
diff --git a/ChangeLog b/ChangeLog
index cba910e..309b02e 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -2,6 +2,8 @@ Thu Oct 15 14:05:01 1998 Ross Johnson <rpj@swan.canberra.edu.au>
* tsd.c (pthread_setspecific): Fix type declaration and cast.
(pthread_getspecific): Ditto.
+ (pthread_getspecific): Change error return value to NULL if key
+ is not in use.
Thu Oct 15 11:53:21 1998 Ross Johnson <rpj@ixobrychus.canberra.edu.au>
diff --git a/tsd.c b/tsd.c
index 691dca9..8aa1341 100644
--- a/tsd.c
+++ b/tsd.c
@@ -81,7 +81,7 @@ pthread_key_create(pthread_key_t *key, void (*destructor)(void *))
int
pthread_setspecific(pthread_key_t key, void *value)
{
- void * keys[];
+ void ** keys;
int inuse;
/* CRITICAL SECTION */
@@ -104,7 +104,7 @@ pthread_setspecific(pthread_key_t key, void *value)
void *
pthread_getspecific(pthread_key_t key)
{
- void * keys[];
+ void ** keys;
int inuse;
/* CRITICAL SECTION */
@@ -116,7 +116,7 @@ pthread_getspecific(pthread_key_t key)
/* END CRITICAL SECTION */
if (! inuse)
- return EINVAL;
+ return (void *) NULL;
keys = (void **) TlsGetValue(_pthread_TSD_keys_TlsIndex);
return keys[key];