]> granicus.if.org Git - php/commitdiff
Fix a bug where the default value for function argument could be an
authorAndrei Zmievski <andrei@php.net>
Thu, 23 Feb 2006 18:06:04 +0000 (18:06 +0000)
committerAndrei Zmievski <andrei@php.net>
Thu, 23 Feb 2006 18:06:04 +0000 (18:06 +0000)
array with array (!) keys.

Zend/zend_compile.c
Zend/zend_language_parser.y

index 7e848c5c901a2b4faf341f7d4c81705143622e2d..f74838d4d7d6da9c9714cfa4ba3e7b8abf91898a 100644 (file)
@@ -3407,6 +3407,9 @@ void zend_do_add_static_array_element(znode *result, znode *offset, znode *expr)
                        case IS_DOUBLE:
                                zend_hash_index_update(Z_ARRVAL(result->u.constant), (long)Z_DVAL(offset->u.constant), &element, sizeof(zval *), NULL);
                                break;
+                       case IS_CONSTANT_ARRAY:
+                               zend_error(E_ERROR, "Illegal offset type");
+                               break;
                }
        } else {
                zend_hash_next_index_insert(Z_ARRVAL(result->u.constant), &element, sizeof(zval *), NULL);
index a0addb86dc371059a1c6a6e8706c5147f152dae4..0c13a5289d050d94e983af6fc9a4048df17bf6c1 100644 (file)
@@ -611,8 +611,13 @@ expr_without_variable:
        |       internal_functions_in_yacc { $$ = $1; }
        |       T_INT_CAST expr         { zend_do_cast(&$$, &$2, IS_LONG TSRMLS_CC); }
        |       T_DOUBLE_CAST expr      { zend_do_cast(&$$, &$2, IS_DOUBLE TSRMLS_CC); }
+<<<<<<< zend_language_parser.y
+       |       T_STRING_CAST expr      { zend_do_cast(&$$, &$2, IS_STRING TSRMLS_CC); } 
+       |       T_UNICODE_CAST expr     { zend_do_cast(&$$, &$2, IS_UNICODE TSRMLS_CC); } 
+=======
        |       T_STRING_CAST expr      { zend_do_cast(&$$, &$2, UG(unicode)?IS_UNICODE:IS_STRING TSRMLS_CC); }
        |       T_UNICODE_CAST expr     { zend_do_cast(&$$, &$2, IS_UNICODE TSRMLS_CC); }
+>>>>>>> 1.167
        |       T_ARRAY_CAST expr       { zend_do_cast(&$$, &$2, IS_ARRAY TSRMLS_CC); }
        |       T_OBJECT_CAST expr      { zend_do_cast(&$$, &$2, IS_OBJECT TSRMLS_CC); }
        |       T_BOOL_CAST expr        { zend_do_cast(&$$, &$2, IS_BOOL TSRMLS_CC); }