From 0732ad9a3d2d7c833d638acf395cf364bded90ad Mon Sep 17 00:00:00 2001 From: unknown Date: Thu, 19 Apr 2007 17:07:11 -0400 Subject: Bug #27964: pthread_key_create doesn't set errno, so don't report \ errno Vasil Dimov (at Oracle) noted that pthread_key_create() does not set errno, so if it fails then we return the wrong error code. Instead, capture the return value, which is the real error value, and instead report that. mysys/my_thr_init.c: pthread functions don't set the global errno, which should be obvious. --- mysys/my_thr_init.c | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) (limited to 'mysys/my_thr_init.c') diff --git a/mysys/my_thr_init.c b/mysys/my_thr_init.c index 7a5fdbf8ad6..da465385b3e 100644 --- a/mysys/my_thr_init.c +++ b/mysys/my_thr_init.c @@ -79,11 +79,12 @@ static uint get_thread_lib(void); my_bool my_thread_global_init(void) { + int pth_ret; thd_lib_detected= get_thread_lib(); - if (pthread_key_create(&THR_KEY_mysys,0)) + if (pth_ret= pthread_key_create(&THR_KEY_mysys, NULL)) { - fprintf(stderr,"Can't initialize threads: error %d\n",errno); + fprintf(stderr,"Can't initialize threads: pthread error %d\n", pth_ret); return 1; } -- cgit v1.2.1