summaryrefslogtreecommitdiff
path: root/main/php_variables.c
diff options
context:
space:
mode:
authorDmitry Stogov <dmitry@zend.com>2017-05-18 17:59:59 +0300
committerDmitry Stogov <dmitry@zend.com>2017-05-18 17:59:59 +0300
commita08723d3d313445191470c19e12235a56165600a (patch)
tree8b295805411f44233d2332a0db07dcd1eec88a4d /main/php_variables.c
parentb1a07d430bf8292a835bd04b553bc1867d6d6972 (diff)
downloadphp-git-a08723d3d313445191470c19e12235a56165600a.tar.gz
Use interned empty and "one char" strings.
Diffstat (limited to 'main/php_variables.c')
-rw-r--r--main/php_variables.c8
1 files changed, 7 insertions, 1 deletions
diff --git a/main/php_variables.c b/main/php_variables.c
index 577917a007..ae5e922ef6 100644
--- a/main/php_variables.c
+++ b/main/php_variables.c
@@ -49,7 +49,13 @@ PHPAPI void php_register_variable_safe(char *var, char *strval, size_t str_len,
assert(strval != NULL);
/* Prepare value */
- ZVAL_NEW_STR(&new_entry, zend_string_init(strval, str_len, 0));
+ if (str_len == 0) {
+ ZVAL_EMPTY_STRING(&new_entry);
+ } else if (str_len == 1) {
+ ZVAL_INTERNED_STR(&new_entry, ZSTR_CHAR((zend_uchar)*strval));
+ } else {
+ ZVAL_NEW_STR(&new_entry, zend_string_init(strval, str_len, 0));
+ }
php_register_variable_ex(var, &new_entry, track_vars_array);
}