Browse Source

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.
pull/2904/merge
Anatol Belski 8 years ago
parent
commit
0e5d4ea555
  1. 10
      TSRM/TSRM.h

10
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)

Loading…
Cancel
Save