cvs: ZendEngine2 / zend_execute.c
| From: | Zeev Suraski | Date: | Sun, 08 Jun 2003 18:52:53 +0000 |
| Subject: | cvs: ZendEngine2 / zend_execute.c | ||
| Groups: | php.zend-engine.cvs | ||
| Request: | Send a blank email to php-zend-engine-cvs+get-1351@lists.php.net to get a copy of this message | ||
zeev Sun Jun 8 14:52:53 2003 EDT
Modified files:
/ZendEngine2 zend_execute.c
Log:
Fix handling of object property assignments in switch expressions
(bug #23925)
Index: ZendEngine2/zend_execute.c
diff -u ZendEngine2/zend_execute.c:1.469 ZendEngine2/zend_execute.c:1.470
--- ZendEngine2/zend_execute.c:1.469 Mon Jun 2 08:13:11 2003
+++ ZendEngine2/zend_execute.c Sun Jun 8 14:52:53 2003
@@ -17,7 +17,7 @@
+----------------------------------------------------------------------+
*/
-/* $Id: zend_execute.c,v 1.469 2003/06/02 12:13:11 stas Exp $ */
+/* $Id: zend_execute.c,v 1.470 2003/06/08 18:52:53 zeev Exp $ */
#define ZEND_INTENSIVE_DEBUGGING 0
@@ -3054,13 +3054,12 @@
int switch_expr_is_overloaded=0;
if (EX(opline)->op1.op_type==IS_VAR) {
- if (EX_T(EX(opline)->op1.u.var).var.ptr_ptr) {
- PZVAL_LOCK(*EX_T(EX(opline)->op1.u.var).var.ptr_ptr);
+ if (EX_T(EX(opline)->op1.u.var).var.ptr_ptr
+ || (EX_T(EX(opline)->op1.u.var).var.ptr &&
EX_T(EX(opline)->op1.u.var).EA.type!=IS_STRING_OFFSET)) {
+ PZVAL_LOCK(EX_T(EX(opline)->op1.u.var).var.ptr);
} else {
switch_expr_is_overloaded = 1;
- if (EX_T(EX(opline)->op1.u.var).EA.type==IS_STRING_OFFSET) {
- EX_T(EX(opline)->op1.u.var).EA.data.str_offset.str->refcount++;
- }
+ EX_T(EX(opline)->op1.u.var).EA.data.str_offset.str->refcount++;
}
}
is_equal_function(&EX_T(EX(opline)->result.u.var).tmp_var,