summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDmitry Stogov <dmitry@zend.com>2018-01-10 14:11:23 +0300
committerDmitry Stogov <dmitry@zend.com>2018-01-10 14:11:23 +0300
commitd7a0d48d59d493204cd527a1b6ebf12daedb805c (patch)
tree2e415bb5bbe98d96c3f45ba8e85060e4daca7655
parent20a1124f6302330b3123ae202deb2deb62c9a3e2 (diff)
parentabd31deb9130f3fd31b661c0aea6f383aa6b90d5 (diff)
downloadphp-git-d7a0d48d59d493204cd527a1b6ebf12daedb805c.tar.gz
Merge branch 'master' of git.php.net:php-src
* 'master' of git.php.net:php-src: minor optimize on strstr
-rw-r--r--ext/standard/string.c12
1 files changed, 5 insertions, 7 deletions
diff --git a/ext/standard/string.c b/ext/standard/string.c
index 84dd2d8846..97a20fb295 100644
--- a/ext/standard/string.c
+++ b/ext/standard/string.c
@@ -3475,15 +3475,13 @@ PHP_FUNCTION(strtr)
RETURN_STR_COPY(str);
} else if (zend_hash_num_elements(pats) == 1) {
zend_long num_key;
- zend_string *str_key, *replace, *tmp_replace;
- zval *entry, tmp;
+ zend_string *str_key, *tmp_str, *replace, *tmp_replace;
+ zval *entry;
ZEND_HASH_FOREACH_KEY_VAL(pats, num_key, str_key, entry) {
- ZVAL_UNDEF(&tmp);
+ tmp_str = NULL;
if (UNEXPECTED(!str_key)) {
- ZVAL_LONG(&tmp, num_key);
- convert_to_string(&tmp);
- str_key = Z_STR(tmp);
+ str_key = tmp_str = zend_long_to_str(num_key);
}
replace = zval_get_tmp_string(entry, &tmp_replace);
if (ZSTR_LEN(str_key) < 1) {
@@ -3501,8 +3499,8 @@ PHP_FUNCTION(strtr)
ZSTR_VAL(str_key), ZSTR_LEN(str_key),
ZSTR_VAL(replace), ZSTR_LEN(replace), &dummy));
}
+ zend_tmp_string_release(tmp_str);
zend_tmp_string_release(tmp_replace);
- zval_dtor(&tmp);
return;
} ZEND_HASH_FOREACH_END();
} else {