From: Dmitry Stogov Date: Fri, 7 Oct 2005 10:06:45 +0000 (+0000) Subject: Fixed memory leak X-Git-Tag: RELEASE_0_9_1~204 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=e9f91abfef8621f7d41bc2c7c17ec9c6d390adbc;p=php Fixed memory leak --- diff --git a/Zend/zend_operators.c b/Zend/zend_operators.c index 78f7c0d971..1918f30a25 100644 --- a/Zend/zend_operators.c +++ b/Zend/zend_operators.c @@ -319,15 +319,15 @@ ZEND_API void convert_scalar_to_number(zval *op TSRMLS_DC) #define convert_object_to_type(op, ctype, conv_func) \ if (Z_OBJ_HT_P(op)->cast_object) { \ - zval *org; \ - ALLOC_ZVAL(org); \ - *org = *op; \ - if (Z_OBJ_HT_P(op)->cast_object(org, op, ctype TSRMLS_CC) == FAILURE) { \ + zval dst; \ + if (Z_OBJ_HT_P(op)->cast_object(op, &dst, ctype TSRMLS_CC) == FAILURE) { \ zend_error(E_RECOVERABLE_ERROR, \ - "Object of class %v could not be converted to " # ctype, Z_OBJCE_P(org)->name); \ - INIT_ZVAL(*op); \ + "Object of class %v could not be converted to " # ctype, Z_OBJCE_P(op)->name); \ + } else { \ + zval_dtor(op); \ + op->type = ctype; \ + op->value = dst.value; \ } \ - zval_dtor(org); \ } else { \ if(Z_OBJ_HT_P(op)->get) { \ zval *newop = Z_OBJ_HT_P(op)->get(op TSRMLS_CC); \