]> granicus.if.org Git - php/commitdiff
Turn off bogus warnings with overloaded dimensions and += (and friends)
authorZeev Suraski <zeev@php.net>
Wed, 11 Feb 2004 15:50:23 +0000 (15:50 +0000)
committerZeev Suraski <zeev@php.net>
Wed, 11 Feb 2004 15:50:23 +0000 (15:50 +0000)
Zend/zend_execute.c

index 01ad93e3f7da08f9f61661ceac8c45d7b2b2afc1..bd25bb7aedf084b66ac91d2ef4c4a81beef64693 100644 (file)
@@ -932,8 +932,14 @@ static void zend_fetch_dimension_address(znode *result, znode *op1, znode *op2,
                                zval *overloaded_result = Z_OBJ_HT_P(container)->read_dimension(container, dim, type TSRMLS_CC);
 
                                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");
+                                       switch (type) {
+                                               case BP_VAR_RW:
+                                               case BP_VAR_W:
+                                                       if (overloaded_result->type != IS_OBJECT
+                                                               && !overloaded_result->is_ref) {
+                                                               zend_error(E_ERROR, "Objects used as arrays in post/pre increment/decrement must return values by reference");
+                                                       }
+                                                       break;
                                        }
 
                                        *retval = &overloaded_result;