|
|
- --- a/src/include/threads.h
- +++ b/src/include/threads.h
- @@ -89,7 +89,7 @@ static _t __fr_thread_local_init_##_n(pt
- # define fr_thread_local_get(_n) _n
- #elif defined(HAVE_PTHREAD_H)
- # include <pthread.h>
- -# define fr_thread_local_setup(_t, _n) \
- +# define fr_thread_local_setup(_t, _n) static __thread _t _n;\
- static pthread_key_t __fr_thread_local_key_##_n;\
- static pthread_once_t __fr_thread_local_once_##_n = PTHREAD_ONCE_INIT;\
- static pthread_destructor_t __fr_thread_local_destructor_##_n = NULL;\
- @@ -100,17 +100,17 @@ static void __fr_thread_local_destroy_##
- static void __fr_thread_local_key_init_##_n(void)\
- {\
- (void) pthread_key_create(&__fr_thread_local_key_##_n, __fr_thread_local_destroy_##_n);\
- - (void) pthread_setspecific(__fr_thread_local_key_##_n, &(_n));\
- }\
- static _t __fr_thread_local_init_##_n(pthread_destructor_t func)\
- {\
- __fr_thread_local_destructor_##_n = func;\
- if (_n) return _n; \
- (void) pthread_once(&__fr_thread_local_once_##_n, __fr_thread_local_key_init_##_n);\
- + (void) pthread_setspecific(__fr_thread_local_key_##_n, &(_n));\
- return _n;\
- }
- -# define fr_thread_local_init(_n, _f) __fr_thread_local_init_##_n(_f)
- -# define fr_thread_local_set(_n, _v) __fr_thread_local_set_##_n(_v)
- -# define fr_thread_local_get(_n) __fr_thread_local_get_##_n()
- +# define fr_thread_local_init(_n, _f) __fr_thread_local_init_##_n(_f)
- +# define fr_thread_local_set(_n, _v) ((int)!((_n = _v) || 1))
- +# define fr_thread_local_get(_n) _n
- #endif
- #endif
|