]> granicus.if.org Git - php/commitdiff
- Fix the static array() initializing
authorAndi Gutmans <andi@php.net>
Wed, 9 Jun 1999 19:26:54 +0000 (19:26 +0000)
committerAndi Gutmans <andi@php.net>
Wed, 9 Jun 1999 19:26:54 +0000 (19:26 +0000)
Zend/zend-parser.y
Zend/zend_compile.c
Zend/zend_compile.h
Zend/zend_operators.c

index 1fd9bbb31654dbc05b5a7adfda795989820d8a77..43d38a542137579c80cb7f4094ec4c042285af3d 100644 (file)
@@ -491,9 +491,9 @@ static_array_pair_list:
 
 non_empty_static_array_pair_list:
                non_empty_static_array_pair_list ',' static_scalar T_DOUBLE_ARROW static_scalar { do_add_static_array_element(&$$, &$3, &$5); }
-       |       non_empty_static_array_pair_list ',' static_scalar              { do_add_static_array_element(&$$, &$3, NULL); }
+       |       non_empty_static_array_pair_list ',' static_scalar              { do_add_static_array_element(&$$, NULL, &$3); }
        |       static_scalar T_DOUBLE_ARROW static_scalar      { $$.op_type = IS_CONST; $$.u.constant.refcount=1; $$.u.constant.is_ref=0; array_init(&$$.u.constant); do_add_static_array_element(&$$, &$1, &$3); }
-       |       static_scalar                                                                   { $$.op_type = IS_CONST; $$.u.constant.refcount=1; $$.u.constant.is_ref=0; array_init(&$$.u.constant); do_add_static_array_element(&$$, &$1, NULL); }
+       |       static_scalar                                                                   { $$.op_type = IS_CONST; $$.u.constant.refcount=1; $$.u.constant.is_ref=0; array_init(&$$.u.constant); do_add_static_array_element(&$$, NULL, &$1); }
 ;
 
 expr:
index ddc09edbe6d7a181ce4fa35fee41fa295d34e32f..28043472f61c9a4bb8ca8b4abb6c2ed70dcd5a29 100644 (file)
@@ -1418,7 +1418,7 @@ void do_add_array_element(znode *result, znode *expr, znode *offset CLS_DC)
 
 
 
-void do_add_static_array_element(znode *result, znode *expr, znode *offset)
+void do_add_static_array_element(znode *result, znode *offset, znode *expr)
 {
        zval *element = (zval *) emalloc(sizeof(zval));
 
index 1b704447e64888c9d1abdf66589d77dae91650a1..adc06080fbe7013db51481b1ccb013a234a7e662 100644 (file)
@@ -300,7 +300,7 @@ void do_shell_exec(znode *result, znode *cmd CLS_DC);
 
 void do_init_array(znode *result, znode *expr, znode *offset CLS_DC);
 void do_add_array_element(znode *result, znode *expr, znode *offset CLS_DC);
-void do_add_static_array_element(znode *result, znode *expr, znode *offset);
+void do_add_static_array_element(znode *result, znode *offset, znode *expr);
 void do_list_init();
 void do_list_end(znode *result, znode *expr CLS_DC);
 void do_add_list_element(znode *element CLS_DC);
index 364848bf0807198202648019412cc638b6c97f63..b88c52cded94bdb15669bda079a1e51937b04991 100644 (file)
@@ -431,9 +431,9 @@ ZEND_API int add_function(zval *result, zval *op1, zval *op2)
        if (op1->type == IS_ARRAY && op2->type == IS_ARRAY) {
                zval tmp;
                
-               zend_hash_merge(op1->value.ht,op2->value.ht,(void (*)(void *pData)) zval_copy_ctor, (void *) &tmp, sizeof(zval), 0);
                *result = *op1;
-               zval_dtor(op2);
+               zval_copy_ctor(result);
+               zend_hash_merge(result->value.ht,op2->value.ht,(void (*)(void *pData)) zval_copy_ctor, (void *) &tmp, sizeof(zval), 0);
                return SUCCESS;
        }
        zendi_convert_scalar_to_number(op1, op1_copy);