summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--ext/odbc/config.m42
-rw-r--r--ext/odbc/config.w322
-rw-r--r--ext/odbc/php_odbc.c6
-rw-r--r--ext/odbc/php_odbc_includes.h5
4 files changed, 12 insertions, 3 deletions
diff --git a/ext/odbc/config.m4 b/ext/odbc/config.m4
index 607e8fa404..5aa7efa376 100644
--- a/ext/odbc/config.m4
+++ b/ext/odbc/config.m4
@@ -550,7 +550,7 @@ if test -n "$ODBC_TYPE"; then
PHP_SUBST_OLD(ODBC_LFLAGS)
PHP_SUBST_OLD(ODBC_TYPE)
- PHP_NEW_EXTENSION(odbc, php_odbc.c, $ext_shared,, $ODBC_INCLUDE)
+ PHP_NEW_EXTENSION(odbc, php_odbc.c, $ext_shared,, [$ODBC_INCLUDE -DZEND_ENABLE_STATIC_TSRMLS_CACHE=1])
else
AC_MSG_CHECKING([for any ODBC driver support])
AC_MSG_RESULT(no)
diff --git a/ext/odbc/config.w32 b/ext/odbc/config.w32
index 9e969852c2..8a284e3258 100644
--- a/ext/odbc/config.w32
+++ b/ext/odbc/config.w32
@@ -8,7 +8,7 @@ if (PHP_ODBC == "yes") {
if (CHECK_LIB("odbc32.lib", "odbc") && CHECK_LIB("odbccp32.lib", "odbc")
&& CHECK_HEADER_ADD_INCLUDE("sql.h", "CFLAGS_ODBC")
&& CHECK_HEADER_ADD_INCLUDE("sqlext.h", "CFLAGS_ODBC")) {
- EXTENSION("odbc", "php_odbc.c");
+ EXTENSION("odbc", "php_odbc.c", PHP_ODBC_SHARED, "/DZEND_ENABLE_STATIC_TSRMLS_CACHE=1");
AC_DEFINE("HAVE_UODBC", 1, "ODBC support");
if ("no" == PHP_ODBCVER) {
AC_DEFINE("ODBCVER", "0x0300", "The highest supported ODBC version", false);
diff --git a/ext/odbc/php_odbc.c b/ext/odbc/php_odbc.c
index 1f14ee23c7..6a2db5581c 100644
--- a/ext/odbc/php_odbc.c
+++ b/ext/odbc/php_odbc.c
@@ -411,6 +411,9 @@ zend_module_entry odbc_module_entry = {
/* }}} */
#ifdef COMPILE_DL_ODBC
+#ifdef ZTS
+ZEND_TSRMLS_CACHE_DEFINE();
+#endif
ZEND_GET_MODULE(odbc)
#endif
@@ -695,6 +698,9 @@ PHP_INI_END()
static PHP_GINIT_FUNCTION(odbc)
{
+#if defined(COMPILE_DL_ODBC) && defined(ZTS)
+ ZEND_TSRMLS_CACHE_UPDATE();
+#endif
odbc_globals->num_persistent = 0;
}
diff --git a/ext/odbc/php_odbc_includes.h b/ext/odbc/php_odbc_includes.h
index 44bc7a3444..e1ddcec765 100644
--- a/ext/odbc/php_odbc_includes.h
+++ b/ext/odbc/php_odbc_includes.h
@@ -287,7 +287,10 @@ void odbc_sql_error(ODBC_SQL_ERROR_PARAMS);
#define IS_SQL_BINARY(x) (x == SQL_BINARY || x == SQL_VARBINARY || x == SQL_LONGVARBINARY)
#ifdef ZTS
-# define ODBCG(v) TSRMG(odbc_globals_id, zend_odbc_globals *, v)
+# define ODBCG(v) ZEND_TSRMG(odbc_globals_id, zend_odbc_globals *, v)
+# ifdef COMPILE_DL_ODBC
+ZEND_TSRMLS_CACHE_EXTERN();
+# endif
#else
# define ODBCG(v) (odbc_globals.v)
extern ZEND_API zend_odbc_globals odbc_globals;