diff options
Diffstat (limited to 'Zend/zend_operators.c')
| -rw-r--r-- | Zend/zend_operators.c | 17 |
1 files changed, 10 insertions, 7 deletions
diff --git a/Zend/zend_operators.c b/Zend/zend_operators.c index d8853ebb7a..a51b33b5c7 100644 --- a/Zend/zend_operators.c +++ b/Zend/zend_operators.c @@ -304,13 +304,13 @@ ZEND_API void convert_scalar_to_number(zval *op TSRMLS_DC) } \ } - ZEND_API void convert_to_long(zval *op) { - convert_to_long_base(op, 10); + if ((op)->type != IS_BOOL && (op)->type != IS_LONG) { + convert_to_long_base(op, 10); + } } - ZEND_API void convert_to_long_base(zval *op, int base) { char *strval; @@ -1175,11 +1175,14 @@ ZEND_API int add_string_to_string(zval *result, zval *op1, zval *op2) ZEND_API int concat_function(zval *result, zval *op1, zval *op2 TSRMLS_DC) { zval op1_copy, op2_copy; - int use_copy1, use_copy2; - + int use_copy1 = 0, use_copy2 = 0; - zend_make_printable_zval(op1, &op1_copy, &use_copy1); - zend_make_printable_zval(op2, &op2_copy, &use_copy2); + if (op1->type != IS_STRING) { + zend_make_printable_zval(op1, &op1_copy, &use_copy1); + } + if (op2->type != IS_STRING) { + zend_make_printable_zval(op2, &op2_copy, &use_copy2); + } if (use_copy1) { /* We have created a converted copy of op1. Therefore, op1 won't become the result so |
