moriyoshi               Tue Oct  8 13:20:16 2002 EDT

  Modified files:              
    /php4/ext/mbstring  mbregex.c mbstring.c 
  Log:
  ZTS fixes
  
  
Index: php4/ext/mbstring/mbregex.c
diff -u php4/ext/mbstring/mbregex.c:1.13 php4/ext/mbstring/mbregex.c:1.14
--- php4/ext/mbstring/mbregex.c:1.13    Tue Oct  8 11:15:50 2002
+++ php4/ext/mbstring/mbregex.c Tue Oct  8 13:20:08 2002
@@ -306,9 +306,16 @@
        register int c;
        static int done = 0;
 
+#ifdef ZTS
+       extern MUTEX_T mbregex_locale_mutex;
+#endif
+
        if (done) {
                return;
        }
+#ifdef ZTS
+       tsrm_mutex_lock( mbregex_locale_mutex );
+#endif
 
        memset(re_syntax_table, 0, sizeof(re_syntax_table));
 
@@ -324,6 +331,9 @@
                        re_syntax_table[c] = Sword2;
                }
        }
+#ifdef ZTS
+       tsrm_mutex_unlock( mbregex_locale_mutex );
+#endif
        done = 1;
 }
 
Index: php4/ext/mbstring/mbstring.c
diff -u php4/ext/mbstring/mbstring.c:1.100 php4/ext/mbstring/mbstring.c:1.101
--- php4/ext/mbstring/mbstring.c:1.100  Mon Oct  7 13:59:48 2002
+++ php4/ext/mbstring/mbstring.c        Tue Oct  8 13:20:10 2002
@@ -17,7 +17,7 @@
    +----------------------------------------------------------------------+
  */
 
-/* $Id: mbstring.c,v 1.100 2002/10/07 17:59:48 moriyoshi Exp $ */
+/* $Id: mbstring.c,v 1.101 2002/10/08 17:20:10 moriyoshi Exp $ */
 
 /*
  * PHP4 Multibyte String module "mbstring" (currently only for Japanese)
@@ -65,6 +65,7 @@
 #include "php_content_types.h"
 #include "SAPI.h"
 #include "php_unicode.h"
+#include "TSRM.h"
 
 #ifdef ZEND_MULTIBYTE
 #include "zend_multibyte.h"
@@ -76,6 +77,10 @@
 #include "mbregex.h"
 #endif
 
+#ifdef ZTS
+MUTEX_T mbregex_locale_mutex = NULL;
+#endif
+
 #if defined(HAVE_MBSTR_JA)
 static const enum mbfl_no_encoding php_mbstr_default_identify_list[] = {
        mbfl_no_encoding_ascii,
@@ -699,10 +704,18 @@
 #endif
 }
 
+static void
+mbstring_globals_dtor(zend_mbstring_globals *pglobals TSRMLS_DC)
+{
+#if HAVE_MBREGEX
+       zend_hash_destroy(&MBSTRG(ht_rc));
+#endif
+}
+
 PHP_MINIT_FUNCTION(mbstring)
 {
 #ifdef ZTS
-       ts_allocate_id(&mbstring_globals_id, sizeof(zend_mbstring_globals), 
(ts_allocate_ctor) php_mbstring_init_globals, NULL);
+       ts_allocate_id(&mbstring_globals_id, sizeof(zend_mbstring_globals), 
+(ts_allocate_ctor) php_mbstring_init_globals, (ts_allocate_dtor) 
+mbstring_globals_dtor);
 #else
        php_mbstring_init_globals(&mbstring_globals TSRMLS_CC);
 #endif
@@ -723,6 +736,12 @@
        REGISTER_LONG_CONSTANT("MB_CASE_UPPER", PHP_UNICODE_CASE_UPPER, CONST_CS | 
CONST_PERSISTENT);
        REGISTER_LONG_CONSTANT("MB_CASE_LOWER", PHP_UNICODE_CASE_LOWER, CONST_CS | 
CONST_PERSISTENT);
        REGISTER_LONG_CONSTANT("MB_CASE_TITLE", PHP_UNICODE_CASE_TITLE, CONST_CS | 
CONST_PERSISTENT);
+
+#if HAVE_MBREGEX
+# ifdef ZTS
+       mbregex_locale_mutex = tsrm_mutex_alloc();
+# endif
+#endif
        return SUCCESS;
 }
 
@@ -748,7 +767,17 @@
        }
 
 #if HAVE_MBREGEX
-       zend_hash_destroy(&MBSTRG(ht_rc));
+# ifdef ZTS
+       if (mbregex_locale_mutex != NULL) {
+               tsrm_mutex_free(mbregex_locale_mutex);
+       }
+# endif
+#endif
+
+#ifdef ZTS
+       ts_free_id(mbstring_globals_id);
+#else
+       mbstring_globals_dtor(&mbstring_globals TSRMLS_CC);
 #endif
 
        return SUCCESS;



-- 
PHP CVS Mailing List (http://www.php.net/)
To unsubscribe, visit: http://www.php.net/unsub.php

Reply via email to