zend_string *key;
//??? int len = sizeof(zend_ast *);
//??? Z_TYPE(element) |= IS_CONSTANT_INDEX;
- Z_STR(offset->u.constant)->gc.u.v.flags |= IS_STR_AST;
-
- key = STR_INIT((char*)Z_AST(offset->u.constant), sizeof(zend_ast*), 0);
+ key = STR_INIT((char*)&Z_AST(offset->u.constant), sizeof(zend_ast*), 0);
+ key->gc.u.v.flags |= IS_STR_AST;
//??? key[len] = Z_TYPE(offset->u.constant);
//??? key[len + 1] = 0;
zend_symtable_update(Z_ARRVAL(result->u.constant), key, &element);
}
if (str_index->gc.u.v.flags & IS_STR_AST) {
- zend_ast_evaluate(&const_value, (zend_ast *)str_index->val, scope TSRMLS_CC);
- zend_ast_destroy((zend_ast *)str_index->val);
+ zend_ast_ref *ast = *(zend_ast_ref **)str_index->val;
+
+ zend_ast_evaluate(&const_value, ast->ast, scope TSRMLS_CC);
+ zend_ast_destroy(ast->ast);
+ efree(ast);
//???
} else if (!zend_get_constant_ex(str_index->val, str_index->len, &const_value, scope, str_index->gc.u.v.flags TSRMLS_CC)) {
char *actual, *str;