laruence                                 Sun, 26 Feb 2012 14:56:26 +0000

Revision: http://svn.php.net/viewvc?view=revision&revision=323563

Log:
Improve fix for #61165, the previous one cause #43450 test failed

Bugs: https://bugs.php.net/61165 (Assigned) Segfault - strip_tags()
      https://bugs.php.net/43450 (Closed) Memory leak on some functions with 
implicit object __toString() call
      
Changed paths:
    U   php/php-src/branches/PHP_5_3/Zend/zend_API.c
    U   php/php-src/trunk/Zend/zend_API.c

Modified: php/php-src/branches/PHP_5_3/Zend/zend_API.c
===================================================================
--- php/php-src/branches/PHP_5_3/Zend/zend_API.c        2012-02-26 10:48:50 UTC 
(rev 323562)
+++ php/php-src/branches/PHP_5_3/Zend/zend_API.c        2012-02-26 14:56:26 UTC 
(rev 323563)
@@ -255,14 +255,13 @@
 {
        if (Z_OBJ_HANDLER_PP(arg, cast_object)) {
                zval *obj;
-               ALLOC_ZVAL(obj);
-               MAKE_COPY_ZVAL(arg, obj);
+               MAKE_STD_ZVAL(obj);
                if (Z_OBJ_HANDLER_P(*arg, cast_object)(*arg, obj, IS_STRING 
TSRMLS_CC) == SUCCESS) {
                        zval_ptr_dtor(arg);
                        *arg = obj;
                        return SUCCESS;
                }
-               zval_ptr_dtor(&obj);
+               efree(obj);
        }
        /* Standard PHP objects */
        if (Z_OBJ_HT_PP(arg) == &std_object_handlers || !Z_OBJ_HANDLER_PP(arg, 
cast_object)) {

Modified: php/php-src/trunk/Zend/zend_API.c
===================================================================
--- php/php-src/trunk/Zend/zend_API.c   2012-02-26 10:48:50 UTC (rev 323562)
+++ php/php-src/trunk/Zend/zend_API.c   2012-02-26 14:56:26 UTC (rev 323563)
@@ -263,8 +263,7 @@
 {
        if (Z_OBJ_HANDLER_PP(arg, cast_object)) {
                zval *obj;
-               ALLOC_ZVAL(obj);
-               MAKE_COPY_ZVAL(arg, obj);
+               MAKE_STD_ZVAL(obj);
                if (Z_OBJ_HANDLER_P(*arg, cast_object)(*arg, obj, type 
TSRMLS_CC) == SUCCESS) {
                        zval_ptr_dtor(arg);
                        *arg = obj;
@@ -272,7 +271,7 @@
                        *p = Z_STRVAL_PP(arg);
                        return SUCCESS;
                }
-               zval_ptr_dtor(&obj);
+               efree(obj);
        }
        /* Standard PHP objects */
        if (Z_OBJ_HT_PP(arg) == &std_object_handlers || !Z_OBJ_HANDLER_PP(arg, 
cast_object)) {

-- 
PHP CVS Mailing List (http://www.php.net/)
To unsubscribe, visit: http://www.php.net/unsub.php

Reply via email to