Skip to content

Commit a4ec0fc

Browse files
committed
fix windows
1 parent 7d846b4 commit a4ec0fc

2 files changed

Lines changed: 24 additions & 6 deletions

File tree

Zend/zend.c

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -52,8 +52,8 @@ static bool startup_done = false;
5252
#ifdef ZTS
5353
ZEND_API int compiler_globals_id;
5454
ZEND_API int executor_globals_id;
55-
ZEND_API TSRM_TLS TSRM_TLS_MODEL_ATTR zend_executor_globals executor_globals_tls;
56-
ZEND_API TSRM_TLS TSRM_TLS_MODEL_ATTR zend_compiler_globals compiler_globals_tls;
55+
ZEND_TLS_API TSRM_TLS TSRM_TLS_MODEL_ATTR zend_executor_globals executor_globals_tls;
56+
ZEND_TLS_API TSRM_TLS TSRM_TLS_MODEL_ATTR zend_compiler_globals compiler_globals_tls;
5757
/* ts_allocate_tls_id takes a callback so each thread resolves its own block.
5858
* A plain &..._tls would capture only the registering thread's address. */
5959
static void *executor_globals_tls_addr(void) { return &executor_globals_tls; }

Zend/zend_globals_macros.h

Lines changed: 22 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -26,12 +26,26 @@ typedef struct _zend_executor_globals zend_executor_globals;
2626
typedef struct _zend_php_scanner_globals zend_php_scanner_globals;
2727
typedef struct _zend_ini_scanner_globals zend_ini_scanner_globals;
2828

29+
#ifdef ZEND_WIN32
30+
# define ZEND_TLS_API
31+
# ifdef LIBZEND_EXPORTS
32+
# define ZEND_TLS_DIRECT 1
33+
# endif
34+
#else
35+
# define ZEND_TLS_API ZEND_API
36+
# define ZEND_TLS_DIRECT 1
37+
#endif
38+
2939
BEGIN_EXTERN_C()
3040

3141
/* Compiler */
3242
#ifdef ZTS
33-
extern ZEND_API TSRM_TLS TSRM_TLS_MODEL_ATTR zend_compiler_globals compiler_globals_tls;
34-
# define CG(v) (compiler_globals_tls.v)
43+
# ifdef ZEND_TLS_DIRECT
44+
extern ZEND_TLS_API TSRM_TLS TSRM_TLS_MODEL_ATTR zend_compiler_globals compiler_globals_tls;
45+
# define CG(v) (compiler_globals_tls.v)
46+
# else
47+
# define CG(v) ZEND_TSRMG(compiler_globals_id, zend_compiler_globals *, v)
48+
# endif
3549
#else
3650
# define CG(v) (compiler_globals.v)
3751
extern ZEND_API struct _zend_compiler_globals compiler_globals;
@@ -41,8 +55,12 @@ ZEND_API int zendparse(void);
4155

4256
/* Executor */
4357
#ifdef ZTS
44-
extern ZEND_API TSRM_TLS TSRM_TLS_MODEL_ATTR zend_executor_globals executor_globals_tls;
45-
# define EG(v) (executor_globals_tls.v)
58+
# ifdef ZEND_TLS_DIRECT
59+
extern ZEND_TLS_API TSRM_TLS TSRM_TLS_MODEL_ATTR zend_executor_globals executor_globals_tls;
60+
# define EG(v) (executor_globals_tls.v)
61+
# else
62+
# define EG(v) ZEND_TSRMG(executor_globals_id, zend_executor_globals *, v)
63+
# endif
4664
#else
4765
# define EG(v) (executor_globals.v)
4866
extern ZEND_API zend_executor_globals executor_globals;

0 commit comments

Comments
 (0)