Browse Source

- Fix the static array() initializing

experimental/newoperator
Andi Gutmans 28 years ago
parent
commit
7ed4923441
  1. 4
      Zend/zend-parser.y
  2. 2
      Zend/zend_compile.c
  3. 2
      Zend/zend_compile.h
  4. 4
      Zend/zend_operators.c

4
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:

2
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));

2
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);

4
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);

Loading…
Cancel
Save