From: Andi Gutmans Date: Wed, 9 Jun 1999 19:26:54 +0000 (+0000) Subject: - Fix the static array() initializing X-Git-Tag: BEFORE_REMOVING_GC_STEP1~168 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=7ed492344126557e111e462675a5a4d93114ea0d;p=php - Fix the static array() initializing --- diff --git a/Zend/zend-parser.y b/Zend/zend-parser.y index 1fd9bbb316..43d38a5421 100644 --- a/Zend/zend-parser.y +++ b/Zend/zend-parser.y @@ -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: diff --git a/Zend/zend_compile.c b/Zend/zend_compile.c index ddc09edbe6..28043472f6 100644 --- a/Zend/zend_compile.c +++ b/Zend/zend_compile.c @@ -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)); diff --git a/Zend/zend_compile.h b/Zend/zend_compile.h index 1b704447e6..adc06080fb 100644 --- a/Zend/zend_compile.h +++ b/Zend/zend_compile.h @@ -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); diff --git a/Zend/zend_operators.c b/Zend/zend_operators.c index 364848bf08..b88c52cded 100644 --- a/Zend/zend_operators.c +++ b/Zend/zend_operators.c @@ -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);