cvs: ZendEngine2 / zend_execute.c
| From: | Zeev Suraski | Date: | Wed, 11 Feb 2004 19:12:17 +0000 |
| Subject: | cvs: ZendEngine2 / zend_execute.c | ||
| Groups: | php.zend-engine.cvs | ||
| Request: | Send a blank email to php-zend-engine-cvs+get-2358@lists.php.net to get a copy of this message | ||
zeev Wed Feb 11 14:12:17 2004 EDT
Modified files:
/ZendEngine2 zend_execute.c
Log:
Fix leaks in assignments to overloaded objects
http://cvs.php.net/diff.php/ZendEngine2/zend_execute.c?r1=1.608&r2=1.609&ty=u
Index: ZendEngine2/zend_execute.c
diff -u ZendEngine2/zend_execute.c:1.608 ZendEngine2/zend_execute.c:1.609
--- ZendEngine2/zend_execute.c:1.608 Wed Feb 11 11:28:46 2004
+++ ZendEngine2/zend_execute.c Wed Feb 11 14:12:16 2004
@@ -17,7 +17,7 @@
+----------------------------------------------------------------------+
*/
-/* $Id: zend_execute.c,v 1.608 2004/02/11 16:28:46 zeev Exp $ */
+/* $Id: zend_execute.c,v 1.609 2004/02/11 19:12:16 zeev Exp $ */
#define ZEND_INTENSIVE_DEBUGGING 0
@@ -394,7 +394,17 @@
*value = *orig_value;
value->is_ref = 0;
value->refcount = 0;
+ } else if (value_op->op_type == IS_CONST) {
+ zval *orig_value = value;
+
+ ALLOC_ZVAL(value);
+ *value = *orig_value;
+ value->is_ref = 0;
+ value->refcount = 0;
+ zval_copy_ctor(value);
}
+
+ value->refcount++;
if (opcode == ZEND_ASSIGN_OBJ) {
zval tmp;
@@ -423,6 +433,7 @@
}
Z_OBJ_HT_P(object)->write_dimension(object, property_name, value TSRMLS_CC);
}
+ zval_ptr_dtor(&value);
FREE_OP(Ts, op2, EG(free_op2));
if (result) {