com php-src: Fix mbstring overloads in zts: ext/mbstring/mbstring.c
| From: | Nikita Popov | Date: | Tue, 26 Aug 2014 23:26:57 +0000 |
| Subject: | com php-src: Fix mbstring overloads in zts: ext/mbstring/mbstring.c | ||
| Groups: | php.cvs | ||
| Request: | Send a blank email to php-cvs+get-81143@lists.php.net to get a copy of this message | ||
Commit: f719b9ddcf68815b0883a4e67e4d99c5fbd1f9cd
Author: Nikita Popov <nikic@php.net> Wed, 27 Aug 2014 00:53:24 +0200
Parents: 2788a718aa55f8f75e50009a8389b6a0a3796497
Branches: master
Link: http://git.php.net/?p=php-src.git;a=commitdiff;h=f719b9ddcf68815b0883a4e67e4d99c5fbd1f9cd
Log:
Fix mbstring overloads in zts
Changed paths:
M ext/mbstring/mbstring.c
Diff:
diff --git a/ext/mbstring/mbstring.c b/ext/mbstring/mbstring.c
index db8f352..c82e4f4 100644
--- a/ext/mbstring/mbstring.c
+++ b/ext/mbstring/mbstring.c
@@ -1622,9 +1622,8 @@ PHP_RINIT_FUNCTION(mbstring)
CG(compiler_options) |= ZEND_COMPILE_NO_BUILTIN_STRLEN;
while (p->type > 0) {
if ((MBSTRG(func_overload) & p->type) == p->type &&
- (orig = zend_hash_str_find_ptr(EG(function_table), p->save_func,
- strlen(p->save_func))) == NULL) {
-
+ !zend_hash_str_exists(EG(function_table), p->save_func, strlen(p->save_func))
+ ) {
func = zend_hash_str_find_ptr(EG(function_table), p->ovld_func, strlen(p->ovld_func));
if ((orig = zend_hash_str_find_ptr(EG(function_table), p->orig_func,
strlen(p->orig_func))) == NULL) {
@@ -1633,11 +1632,14 @@ PHP_RINIT_FUNCTION(mbstring)
} else {
ZEND_ASSERT(orig->type == ZEND_INTERNAL_FUNCTION);
zend_hash_str_add_mem(EG(function_table), p->save_func, strlen(p->save_func), orig,
sizeof(zend_internal_function));
+ function_add_ref(orig);
if (zend_hash_str_update_mem(EG(function_table), p->orig_func, strlen(p->orig_func),
func, sizeof(zend_internal_function)) == NULL) {
php_error_docref("ref.mbstring" TSRMLS_CC, E_WARNING, "mbstring couldn't
replace function %s.", p->orig_func);
return FAILURE;
}
+
+ function_add_ref(func);
}
}
p++;
@@ -1684,6 +1686,7 @@ PHP_RSHUTDOWN_FUNCTION(mbstring)
(orig = zend_hash_str_find_ptr(EG(function_table), p->save_func, strlen(p->save_func))))
{
zend_hash_str_update_mem(EG(function_table), p->orig_func, strlen(p->orig_func), orig,
sizeof(zend_internal_function));
+ function_add_ref(orig);
zend_hash_str_del(EG(function_table), p->save_func, strlen(p->save_func));
}
p++;