summaryrefslogtreecommitdiff
path: root/Zend/zend_ast.c
diff options
context:
space:
mode:
Diffstat (limited to 'Zend/zend_ast.c')
-rw-r--r--Zend/zend_ast.c15
1 files changed, 9 insertions, 6 deletions
diff --git a/Zend/zend_ast.c b/Zend/zend_ast.c
index 2532018274..1a8be00395 100644
--- a/Zend/zend_ast.c
+++ b/Zend/zend_ast.c
@@ -130,9 +130,11 @@ ZEND_API zend_ast *zend_ast_create(zend_ast_kind kind, ...) {
return ast;
}
-ZEND_API zend_ast_list *zend_ast_create_list(uint32_t init_children, zend_ast_kind kind, ...) {
+ZEND_API zend_ast *zend_ast_create_list(uint32_t init_children, zend_ast_kind kind, ...) {
TSRMLS_FETCH();
- zend_ast_list *list = zend_ast_alloc(zend_ast_list_size(4) TSRMLS_CC);
+ zend_ast *ast = zend_ast_alloc(zend_ast_list_size(4) TSRMLS_CC);
+
+ zend_ast_list *list = (zend_ast_list *) ast;
list->kind = kind;
list->attr = 0;
list->lineno = CG(zend_lineno);
@@ -143,26 +145,27 @@ ZEND_API zend_ast_list *zend_ast_create_list(uint32_t init_children, zend_ast_ki
uint32_t i;
va_start(va, kind);
for (i = 0; i < init_children; ++i) {
- list = zend_ast_list_add(list, va_arg(va, zend_ast *));
+ ast = zend_ast_list_add(ast, va_arg(va, zend_ast *));
}
va_end(va);
}
- return list;
+ return ast;
}
static inline zend_bool is_power_of_two(uint32_t n) {
return n == (n & -n);
}
-ZEND_API zend_ast_list *zend_ast_list_add(zend_ast_list *list, zend_ast *op) {
+ZEND_API zend_ast *zend_ast_list_add(zend_ast *ast, zend_ast *op) {
+ zend_ast_list *list = zend_ast_get_list(ast);
if (list->children >= 4 && is_power_of_two(list->children)) {
TSRMLS_FETCH();
list = zend_ast_realloc(list,
zend_ast_list_size(list->children), zend_ast_list_size(list->children * 2) TSRMLS_CC);
}
list->child[list->children++] = op;
- return list;
+ return (zend_ast *) list;
}
static void zend_ast_add_array_element(zval *result, zval *offset, zval *expr TSRMLS_DC)