svn: /php/php-src/ branches/PHP_5_3/Zend/zend_API.c trunk/Zend/zend_API.c

From: Date: Sun, 26 Feb 2012 14:56:26 +0000
Subject: svn: /php/php-src/ branches/PHP_5_3/Zend/zend_API.c trunk/Zend/zend_API.c
Groups: php.cvs 
Request: Send a blank email to [email protected] to get a copy of this message
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)) {


Thread (1 message)

  • Xinchen Hui
« previous php.cvs (#67731) next »