#define PREG_REPLACE_EVAL (1<<0)
-#ifdef ZTS
-int pcre_globals_id;
-#else
-php_pcre_globals pcre_globals;
-#endif
+
+ZEND_DECLARE_MODULE_GLOBALS(pcre)
static void *php_pcre_malloc(size_t size)
}
-#ifdef ZTS
-static void php_pcre_init_globals(php_pcre_globals *pcre_globals TSRMLS_DC)
+static void php_pcre_init_globals(zend_pcre_globals *pcre_globals TSRMLS_DC)
{
- zend_hash_init(&PCRE_G(pcre_cache), 0, NULL, php_free_pcre_cache, 1);
+ zend_hash_init(&pcre_globals->pcre_cache, 0, NULL, php_free_pcre_cache, 1);
}
-
-static void php_pcre_shutdown_globals(php_pcre_globals *pcre_globals TSRMLS_DC)
+#ifdef ZTS
+static void php_pcre_shutdown_globals(zend_pcre_globals *pcre_globals TSRMLS_DC)
{
- zend_hash_destroy(&PCRE_G(pcre_cache));
+ zend_hash_destroy(&pcre_globals->pcre_cache);
}
#endif
/* {{{ PHP_MINIT_FUNCTION(pcre) */
static PHP_MINIT_FUNCTION(pcre)
{
-#ifdef ZTS
- ts_allocate_id(
- &pcre_globals_id,
- sizeof(php_pcre_globals),
- (ts_allocate_ctor) php_pcre_init_globals,
- (ts_allocate_dtor) php_pcre_shutdown_globals);
-#else
- zend_hash_init(&PCRE_G(pcre_cache), 0, NULL, php_free_pcre_cache, 1);
-#endif
+ ZEND_INIT_MODULE_GLOBALS(pcre, php_pcre_init_globals, php_pcre_shutdown_globals);
REGISTER_LONG_CONSTANT("PREG_PATTERN_ORDER", PREG_PATTERN_ORDER, CONST_CS | CONST_PERSISTENT);
REGISTER_LONG_CONSTANT("PREG_SET_ORDER", PREG_SET_ORDER, CONST_CS | CONST_PERSISTENT);
/* {{{ PHP_MSHUTDOWN_FUNCTION(pcre) */
static PHP_MSHUTDOWN_FUNCTION(pcre)
{
-#ifndef ZTS
- zend_hash_destroy(&PCRE_G(pcre_cache));
-#else
- ts_free_id(pcre_globals_id);
-#endif
return SUCCESS;
}
/* }}} */
#endif
pcre_cache_entry *pce;
pcre_cache_entry new_entry;
- PCRE_LS_FETCH();
+ TSRMLS_FETCH();
/* Try to lookup the cached regex entry, and if successful, just pass
back the compiled pattern, otherwise go on and compile it. */
#endif
} pcre_cache_entry;
-typedef struct {
+ZEND_BEGIN_MODULE_GLOBALS(pcre)
HashTable pcre_cache;
-} php_pcre_globals;
+ZEND_END_MODULE_GLOBALS(pcre)
#ifdef ZTS
-# define PCRE_LS_D php_pcre_globals *pcre_globals
-# define PCRE_LS_DC , PCRE_LS_D
-# define PCRE_LS_C pcre_globals
-# define PCRE_LS_CC , PCRE_LS_C
-# define PCRE_G(v) (pcre_globals->v)
-# define PCRE_LS_FETCH() php_pcre_globals *pcre_globals = ts_resource(pcre_globals_id);
+# define PCRE_G(v) TSRMG(pcre_globals_id, zend_pcre_globals *, v)
#else
-# define PCRE_LS_D
-# define PCRE_LS_DC
-# define PCRE_LS_C
-# define PCRE_LS_CC
# define PCRE_G(v) (pcre_globals.v)
-# define PCRE_LS_FETCH()
-extern ZEND_API php_pcre_globals pcre_globals;
#endif
#else