svn: /php/php-src/ branches/PHP_5_3/Zend/zend_API.c trunk/Zend/zend_API.c
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