From ac3f49cb8024c62c4f48182371091e9a52a19273 Mon Sep 17 00:00:00 2001 From: Eric Andersen Date: Thu, 8 Aug 2002 15:44:46 +0000 Subject: Patch from Stefan Allius and Edie C. Dost: In linuxthreads/errno.h the functions __errno_location and __h_errno_location wasn't safe against calling before the library is initialized. --- libpthread/linuxthreads/errno.c | 22 ++++++++++++++++++---- 1 file changed, 18 insertions(+), 4 deletions(-) (limited to 'libpthread/linuxthreads/errno.c') diff --git a/libpthread/linuxthreads/errno.c b/libpthread/linuxthreads/errno.c index ad43be47a..46e2fbb35 100644 --- a/libpthread/linuxthreads/errno.c +++ b/libpthread/linuxthreads/errno.c @@ -20,15 +20,29 @@ #include #include "pthread.h" #include "internals.h" +#include +extern int _errno; +extern int _h_errno; int * __errno_location() { - pthread_descr self = thread_self(); - return THREAD_GETMEM (self, p_errnop); + /* check, if the library is initilize */ + if (__pthread_initial_thread_bos != NULL) + { + pthread_descr self = thread_self(); + return THREAD_GETMEM (self, p_errnop); + } + return &_errno; } int * __h_errno_location() { - pthread_descr self = thread_self(); - return THREAD_GETMEM (self, p_h_errnop); + /* check, if the library is initilize */ + if (__pthread_initial_thread_bos != NULL) + { + pthread_descr self = thread_self(); + + return THREAD_GETMEM (self, p_h_errnop); + } + return &_h_errno; } -- cgit v1.2.3