From: Marcus Boerger Date: Wed, 1 Mar 2006 16:15:40 +0000 (+0000) Subject: - Fix string conversion issues X-Git-Tag: RELEASE_1_2~44 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=bf086dff71e9282dd3200af38d9a229529961089;p=php - Fix string conversion issues --- diff --git a/Zend/zend.c b/Zend/zend.c index 85f76d4d35..d3db13435f 100644 --- a/Zend/zend.c +++ b/Zend/zend.c @@ -360,7 +360,13 @@ ZEND_API void zend_make_string_zval(zval *expr, zval *expr_copy, int *use_copy) zval *z = Z_OBJ_HANDLER_P(expr, get)(expr TSRMLS_CC); if(Z_TYPE_P(z) != IS_OBJECT) { zend_make_string_zval(z, expr_copy, use_copy); - FREE_ZVAL(z); + if (*use_copy) { + FREE_ZVAL(z); + } else { + ZVAL_ZVAL(expr_copy, z, 0, 1); + *use_copy = 1; + return; + } break; } } @@ -421,7 +427,13 @@ ZEND_API void zend_make_printable_zval(zval *expr, zval *expr_copy, int *use_cop zval *z = Z_OBJ_HANDLER_P(expr, get)(expr TSRMLS_CC); if(Z_TYPE_P(z) != IS_OBJECT) { zend_make_printable_zval(z, expr_copy, use_copy); - FREE_ZVAL(z); + if (*use_copy) { + FREE_ZVAL(z); + } else { + ZVAL_ZVAL(expr_copy, z, 0, 1); + *use_copy = 1; + return; + } break; } } @@ -465,7 +477,13 @@ ZEND_API void zend_make_unicode_zval(zval *expr, zval *expr_copy, int *use_copy) zval *z = Z_OBJ_HANDLER_P(expr, get)(expr TSRMLS_CC); if(Z_TYPE_P(z) != IS_OBJECT) { zend_make_unicode_zval(z, expr_copy, use_copy); - FREE_ZVAL(z); + if (*use_copy) { + FREE_ZVAL(z); + } else { + ZVAL_ZVAL(expr_copy, z, 0, 1); + *use_copy = 1; + return; + } break; } }