cvs: ZendEngine2 / zend_execute.c
| From: | Marcus Boerger | Date: | Thu, 11 Dec 2003 09:52:33 +0000 |
| Subject: | cvs: ZendEngine2 / zend_execute.c | ||
| Groups: | php.zend-engine.cvs | ||
| Request: | Send a blank email to php-zend-engine-cvs+get-2089@lists.php.net to get a copy of this message | ||
helly Thu Dec 11 04:52:33 2003 EDT
Modified files:
/ZendEngine2 zend_execute.c
Log:
read_dimension() handler might return 0, handle this.
Index: ZendEngine2/zend_execute.c
diff -u ZendEngine2/zend_execute.c:1.561 ZendEngine2/zend_execute.c:1.562
--- ZendEngine2/zend_execute.c:1.561 Fri Dec 5 11:28:54 2003
+++ ZendEngine2/zend_execute.c Thu Dec 11 04:52:33 2003
@@ -17,7 +17,7 @@
+----------------------------------------------------------------------+
*/
-/* $Id: zend_execute.c,v 1.561 2003/12/05 16:28:54 andi Exp $ */
+/* $Id: zend_execute.c,v 1.562 2003/12/11 09:52:33 helly Exp $ */
#define ZEND_INTENSIVE_DEBUGGING 0
@@ -930,12 +930,16 @@
} else {
zval *dim = get_zval_ptr(op2, Ts, &EG(free_op2), BP_VAR_R);
zval *overloaded_result = Z_OBJ_HT_P(container)->read_dimension(container, dim TSRMLS_CC);
-
- if (type == BP_VAR_RW && !overloaded_result->is_ref) {
- zend_error(E_ERROR, "Objects used as arrays in post/pre increment/decrement must return
values by reference");
- }
- *retval = &overloaded_result;
+ if (overloaded_result) {
+ if (type == BP_VAR_RW && !overloaded_result->is_ref) {
+ zend_error(E_ERROR, "Objects used as arrays in post/pre increment/decrement must return
values by reference");
+ }
+
+ *retval = &overloaded_result;
+ } else {
+ *retval = &EG(error_zval_ptr);
+ }
AI_USE_PTR(T(result->u.var).var);
FREE_OP(Ts, op2, EG(free_op2));
SELECTIVE_PZVAL_LOCK(**retval, result);