cvs: ZendEngine2 / zend_execute.c zend_object_handlers.c
| From: | Zeev Suraski | Date: | Wed, 29 Jan 2003 08:55:13 +0000 |
| Subject: | cvs: ZendEngine2 / zend_execute.c zend_object_handlers.c | ||
| Groups: | php.zend-engine.cvs | ||
| Request: | Send a blank email to php-zend-engine-cvs+get-851@lists.php.net to get a copy of this message | ||
zeev Wed Jan 29 03:55:13 2003 EDT
Modified files:
/ZendEngine2 zend_execute.c zend_object_handlers.c
Log:
Fix assignments to $this.
Fixes the 'make install' problem reported on php-dev
Index: ZendEngine2/zend_execute.c
diff -u ZendEngine2/zend_execute.c:1.414 ZendEngine2/zend_execute.c:1.415
--- ZendEngine2/zend_execute.c:1.414 Tue Jan 28 04:44:18 2003
+++ ZendEngine2/zend_execute.c Wed Jan 29 03:55:12 2003
@@ -310,8 +310,18 @@
SEPARATE_ZVAL_IF_NOT_REF(object_ptr);
object = *object_ptr;
}
+ /* by now, property is a string */
- /* here property is a string */
+
+ /* separate our value if necessary */
+ if (value_op->op_type == IS_TMP_VAR) {
+ zval *orig_value = value;
+
+ ALLOC_ZVAL(value);
+ *value = *orig_value;
+ value->is_ref = 0;
+ value->refcount = 0;
+ }
Z_OBJ_HT_P(object)->write_property(object, property, value TSRMLS_CC);
if (property == &tmp) {
zval_dtor(property);
Index: ZendEngine2/zend_object_handlers.c
diff -u ZendEngine2/zend_object_handlers.c:1.26 ZendEngine2/zend_object_handlers.c:1.27
--- ZendEngine2/zend_object_handlers.c:1.26 Tue Jan 14 07:13:00 2003
+++ ZendEngine2/zend_object_handlers.c Wed Jan 29 03:55:12 2003
@@ -220,7 +220,9 @@
/* To check: can't *variable_ptr be some system variable like error_zval here? */
(*variable_ptr)->type = value->type;
(*variable_ptr)->value = value->value;
- zval_copy_ctor(*variable_ptr);
+ if (value->refcount>0) {
+ zval_copy_ctor(*variable_ptr);
+ }
setter_done = 1;
}
}