diff options
Diffstat (limited to 'Zend/zend_operators.c')
-rw-r--r-- | Zend/zend_operators.c | 6 |
1 files changed, 5 insertions, 1 deletions
diff --git a/Zend/zend_operators.c b/Zend/zend_operators.c index a37fcc9066..8056cfe559 100644 --- a/Zend/zend_operators.c +++ b/Zend/zend_operators.c @@ -1014,7 +1014,11 @@ ZEND_API int add_char_to_string(zval *result, zval *op1, zval *op2) ZEND_API int add_string_to_string(zval *result, zval *op1, zval *op2) { int length = op1->value.str.len + op2->value.str.len; - result->value.str.val = (char *) erealloc(op1->value.str.val, length+1); + if (op1->value.str.val == empty_string) { + result->value.str.val = (char *) emalloc(length+1); + } else { + result->value.str.val = (char *) erealloc(op1->value.str.val, length+1); + } memcpy(result->value.str.val+op1->value.str.len, op2->value.str.val, op2->value.str.len); result->value.str.val[length] = 0; result->value.str.len = length; |