summaryrefslogtreecommitdiff
path: root/package/freeradius-server/patches/patch-src_include_threads_h
blob: 4626536e4bd44ae84c9f991b943d538628ee59ca (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
	fix for:
	| src/lib/log.c:37:31: error: 'fr_strerror_buffer' undeclared (first use in this function)
	found in https://github.com/Optware/Optware-ng/commit/6ece960830b3291bc4ad5780cdb49b0a377aab2e

--- freeradius-server-3.0.21.orig/src/include/threads.h	2020-03-24 15:55:09.000000000 +0100
+++ freeradius-server-3.0.21/src/include/threads.h	2021-02-16 03:54:58.449715370 +0100
@@ -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_set(_n, _v)			((int)!((_n = _v) || 1))
+#  define fr_thread_local_get(_n)			_n
 #endif
 #endif