diff options
author | Anatol Belski <ab@php.net> | 2017-11-15 12:33:35 +0100 |
---|---|---|
committer | Anatol Belski <ab@php.net> | 2017-11-15 12:44:04 +0100 |
commit | 0e5d4ea55554872fe72e5d984b73fc21abc561fe (patch) | |
tree | ed57a3474356351cdd5c5d8b6428b581115b4484 /TSRM | |
parent | 5b28218cc6114e4bc0e92290cbad7a88ee7c9ddb (diff) | |
download | php-git-0e5d4ea55554872fe72e5d984b73fc21abc561fe.tar.gz |
Fix C++ compatibility for TSRM_TLS
If a C++11 source is compiled, thread_local is preferred. Furthermore,
at least GCC treats __thread vs. thread_local a different way and under
certain circumstances would refuse to compile __thread is a C++11 source.
This change is far behind in time, any up-to-date compiler supports C++11
and otherwise it won't take effect on lower versions.
Diffstat (limited to 'TSRM')
-rw-r--r-- | TSRM/TSRM.h | 10 |
1 files changed, 7 insertions, 3 deletions
diff --git a/TSRM/TSRM.h b/TSRM/TSRM.h index 39d4bcc752..4ecee6311f 100644 --- a/TSRM/TSRM.h +++ b/TSRM/TSRM.h @@ -157,10 +157,14 @@ TSRM_API void tsrm_free_interpreter_context(void *context); TSRM_API void *tsrm_get_ls_cache(void); TSRM_API uint8_t tsrm_is_main_thread(void); -#ifdef TSRM_WIN32 -# define TSRM_TLS __declspec(thread) +#if defined(__cplusplus) && __cplusplus > 199711L +# define TSRM_TLS thread_local #else -# define TSRM_TLS __thread +# ifdef TSRM_WIN32 +# define TSRM_TLS __declspec(thread) +# else +# define TSRM_TLS __thread +# endif #endif #define TSRM_SHUFFLE_RSRC_ID(rsrc_id) ((rsrc_id)+1) |