Commit: 152898ff2872f2bdf2123a52c37f6e64c18ab88a
Author: Bob Weinand <bobw...@hotmail.com> Thu, 7 Nov 2013 16:39:47
+0100
Parents: e0135014c3b4edaf67312677c440a93133fe6a0c
Branches: PHP-5.6
Link:
http://git.php.net/?p=php-src.git;a=commitdiff;h=152898ff2872f2bdf2123a52c37f6e64c18ab88a
Log:
Moved arrays again to "static_scalar:" & little cleanup
Changed paths:
M Zend/tests/static_variable.phpt
M Zend/zend_ast.c
M Zend/zend_ast.h
M Zend/zend_extensions.h
M Zend/zend_language_parser.y
M ext/opcache/zend_accelerator_util_funcs.c
M ext/opcache/zend_persist.c
M ext/opcache/zend_persist_calc.c
diff --git a/Zend/tests/static_variable.phpt b/Zend/tests/static_variable.phpt
index ea69a8f..62ca565 100644
--- a/Zend/tests/static_variable.phpt
+++ b/Zend/tests/static_variable.phpt
@@ -7,7 +7,7 @@ const bar = 2, baz = bar + 1;
function foo() {
static $a = 1 + 1;
static $b = [bar => 1 + 1, baz * 2 => 1 << 2];
- static $c = [1 => bar] + [3 => baz];
+ static $c = [1 => bar, 3 => baz];
var_dump($a, $b, $c);
}
diff --git a/Zend/zend_ast.c b/Zend/zend_ast.c
index 7495da3..fb5a7eb 100644
--- a/Zend/zend_ast.c
+++ b/Zend/zend_ast.c
@@ -25,42 +25,42 @@
ZEND_API zend_ast *zend_ast_create_constant(zval *zv)
{
- zend_ast *node = emalloc(sizeof(zend_ast) + sizeof(zval));
- node->kind = ZEND_CONST;
- node->children = 0;
- node->u.val = (zval*)(node + 1);
- INIT_PZVAL_COPY(node->u.val, zv);
- return node;
+ zend_ast *ast = emalloc(sizeof(zend_ast) + sizeof(zval));
+ ast->kind = ZEND_CONST;
+ ast->children = 0;
+ ast->u.val = (zval*)(ast + 1);
+ INIT_PZVAL_COPY(ast->u.val, zv);
+ return ast;
}
ZEND_API zend_ast* zend_ast_create_unary(uint kind, zend_ast *op0)
{
- zend_ast *node = emalloc(sizeof(zend_ast));
- node->kind = kind;
- node->children = 1;
- node->u.child[0] = op0;
- return node;
+ zend_ast *ast = emalloc(sizeof(zend_ast));
+ ast->kind = kind;
+ ast->children = 1;
+ (&ast->u.child)[0] = op0;
+ return ast;
}
ZEND_API zend_ast* zend_ast_create_binary(uint kind, zend_ast *op0, zend_ast
*op1)
{
- zend_ast *node = emalloc(sizeof(zend_ast) + sizeof(zend_ast*));
- node->kind = kind;
- node->children = 2;
- node->u.child[0] = op0;
- node->u.child[1] = op1;
- return node;
+ zend_ast *ast = emalloc(sizeof(zend_ast) + sizeof(zend_ast*));
+ ast->kind = kind;
+ ast->children = 2;
+ (&ast->u.child)[0] = op0;
+ (&ast->u.child)[1] = op1;
+ return ast;
}
ZEND_API zend_ast* zend_ast_create_ternary(uint kind, zend_ast *op0, zend_ast
*op1, zend_ast *op2)
{
- zend_ast *node = emalloc(sizeof(zend_ast) + sizeof(zend_ast*) * 2);
- node->kind = kind;
- node->children = 3;
- node->u.child[0] = op0;
- node->u.child[1] = op1;
- node->u.child[2] = op2;
- return node;
+ zend_ast *ast = emalloc(sizeof(zend_ast) + sizeof(zend_ast*) * 2);
+ ast->kind = kind;
+ ast->children = 3;
+ (&ast->u.child)[0] = op0;
+ (&ast->u.child)[1] = op1;
+ (&ast->u.child)[2] = op2;
+ return ast;
}
ZEND_API int zend_ast_is_ct_constant(zend_ast *ast)
@@ -71,8 +71,8 @@ ZEND_API int zend_ast_is_ct_constant(zend_ast *ast)
return !IS_CONSTANT_TYPE(Z_TYPE_P(ast->u.val));
} else {
for (i = 0; i < ast->children; i++) {
- if (ast->u.child[i]) {
- if (!zend_ast_is_ct_constant(ast->u.child[i])) {
+ if ((&ast->u.child)[i]) {
+ if
(!zend_ast_is_ct_constant((&ast->u.child)[i])) {
return 0;
}
}
@@ -87,137 +87,137 @@ ZEND_API void zend_ast_evaluate(zval *result, zend_ast
*ast TSRMLS_DC)
switch (ast->kind) {
case ZEND_ADD:
- zend_ast_evaluate(&op1, ast->u.child[0] TSRMLS_CC);
- zend_ast_evaluate(&op2, ast->u.child[1] TSRMLS_CC);
+ zend_ast_evaluate(&op1, (&ast->u.child)[0] TSRMLS_CC);
+ zend_ast_evaluate(&op2, (&ast->u.child)[1] TSRMLS_CC);
add_function(result, &op1, &op2 TSRMLS_CC);
zval_dtor(&op1);
zval_dtor(&op2);
break;
case ZEND_SUB:
- zend_ast_evaluate(&op1, ast->u.child[0] TSRMLS_CC);
- zend_ast_evaluate(&op2, ast->u.child[1] TSRMLS_CC);
+ zend_ast_evaluate(&op1, (&ast->u.child)[0] TSRMLS_CC);
+ zend_ast_evaluate(&op2, (&ast->u.child)[1] TSRMLS_CC);
sub_function(result, &op1, &op2 TSRMLS_CC);
zval_dtor(&op1);
zval_dtor(&op2);
break;
case ZEND_MUL:
- zend_ast_evaluate(&op1, ast->u.child[0] TSRMLS_CC);
- zend_ast_evaluate(&op2, ast->u.child[1] TSRMLS_CC);
+ zend_ast_evaluate(&op1, (&ast->u.child)[0] TSRMLS_CC);
+ zend_ast_evaluate(&op2, (&ast->u.child)[1] TSRMLS_CC);
mul_function(result, &op1, &op2 TSRMLS_CC);
zval_dtor(&op1);
zval_dtor(&op2);
break;
case ZEND_DIV:
- zend_ast_evaluate(&op1, ast->u.child[0] TSRMLS_CC);
- zend_ast_evaluate(&op2, ast->u.child[1] TSRMLS_CC);
+ zend_ast_evaluate(&op1, (&ast->u.child)[0] TSRMLS_CC);
+ zend_ast_evaluate(&op2, (&ast->u.child)[1] TSRMLS_CC);
div_function(result, &op1, &op2 TSRMLS_CC);
zval_dtor(&op1);
zval_dtor(&op2);
break;
case ZEND_MOD:
- zend_ast_evaluate(&op1, ast->u.child[0] TSRMLS_CC);
- zend_ast_evaluate(&op2, ast->u.child[1] TSRMLS_CC);
+ zend_ast_evaluate(&op1, (&ast->u.child)[0] TSRMLS_CC);
+ zend_ast_evaluate(&op2, (&ast->u.child)[1] TSRMLS_CC);
mod_function(result, &op1, &op2 TSRMLS_CC);
zval_dtor(&op1);
zval_dtor(&op2);
break;
case ZEND_SL:
- zend_ast_evaluate(&op1, ast->u.child[0] TSRMLS_CC);
- zend_ast_evaluate(&op2, ast->u.child[1] TSRMLS_CC);
+ zend_ast_evaluate(&op1, (&ast->u.child)[0] TSRMLS_CC);
+ zend_ast_evaluate(&op2, (&ast->u.child)[1] TSRMLS_CC);
shift_left_function(result, &op1, &op2 TSRMLS_CC);
zval_dtor(&op1);
zval_dtor(&op2);
break;
case ZEND_SR:
- zend_ast_evaluate(&op1, ast->u.child[0] TSRMLS_CC);
- zend_ast_evaluate(&op2, ast->u.child[1] TSRMLS_CC);
+ zend_ast_evaluate(&op1, (&ast->u.child)[0] TSRMLS_CC);
+ zend_ast_evaluate(&op2, (&ast->u.child)[1] TSRMLS_CC);
shift_right_function(result, &op1, &op2 TSRMLS_CC);
zval_dtor(&op1);
zval_dtor(&op2);
break;
case ZEND_CONCAT:
- zend_ast_evaluate(&op1, ast->u.child[0] TSRMLS_CC);
- zend_ast_evaluate(&op2, ast->u.child[1] TSRMLS_CC);
+ zend_ast_evaluate(&op1, (&ast->u.child)[0] TSRMLS_CC);
+ zend_ast_evaluate(&op2, (&ast->u.child)[1] TSRMLS_CC);
concat_function(result, &op1, &op2 TSRMLS_CC);
zval_dtor(&op1);
zval_dtor(&op2);
break;
case ZEND_BW_OR:
- zend_ast_evaluate(&op1, ast->u.child[0] TSRMLS_CC);
- zend_ast_evaluate(&op2, ast->u.child[1] TSRMLS_CC);
+ zend_ast_evaluate(&op1, (&ast->u.child)[0] TSRMLS_CC);
+ zend_ast_evaluate(&op2, (&ast->u.child)[1] TSRMLS_CC);
bitwise_or_function(result, &op1, &op2 TSRMLS_CC);
zval_dtor(&op1);
zval_dtor(&op2);
break;
case ZEND_BW_AND:
- zend_ast_evaluate(&op1, ast->u.child[0] TSRMLS_CC);
- zend_ast_evaluate(&op2, ast->u.child[1] TSRMLS_CC);
+ zend_ast_evaluate(&op1, (&ast->u.child)[0] TSRMLS_CC);
+ zend_ast_evaluate(&op2, (&ast->u.child)[1] TSRMLS_CC);
bitwise_and_function(result, &op1, &op2 TSRMLS_CC);
zval_dtor(&op1);
zval_dtor(&op2);
break;
case ZEND_BW_XOR:
- zend_ast_evaluate(&op1, ast->u.child[0] TSRMLS_CC);
- zend_ast_evaluate(&op2, ast->u.child[1] TSRMLS_CC);
+ zend_ast_evaluate(&op1, (&ast->u.child)[0] TSRMLS_CC);
+ zend_ast_evaluate(&op2, (&ast->u.child)[1] TSRMLS_CC);
bitwise_xor_function(result, &op1, &op2 TSRMLS_CC);
zval_dtor(&op1);
zval_dtor(&op2);
break;
case ZEND_BW_NOT:
- zend_ast_evaluate(&op1, ast->u.child[0] TSRMLS_CC);
+ zend_ast_evaluate(&op1, (&ast->u.child)[0] TSRMLS_CC);
bitwise_not_function(result, &op1 TSRMLS_CC);
zval_dtor(&op1);
break;
case ZEND_BOOL_NOT:
- zend_ast_evaluate(&op1, ast->u.child[0] TSRMLS_CC);
+ zend_ast_evaluate(&op1, (&ast->u.child)[0] TSRMLS_CC);
boolean_not_function(result, &op1 TSRMLS_CC);
zval_dtor(&op1);
break;
case ZEND_BOOL_XOR:
- zend_ast_evaluate(&op1, ast->u.child[0] TSRMLS_CC);
- zend_ast_evaluate(&op2, ast->u.child[1] TSRMLS_CC);
+ zend_ast_evaluate(&op1, (&ast->u.child)[0] TSRMLS_CC);
+ zend_ast_evaluate(&op2, (&ast->u.child)[1] TSRMLS_CC);
boolean_xor_function(result, &op1, &op2 TSRMLS_CC);
zval_dtor(&op1);
zval_dtor(&op2);
break;
case ZEND_IS_IDENTICAL:
- zend_ast_evaluate(&op1, ast->u.child[0] TSRMLS_CC);
- zend_ast_evaluate(&op2, ast->u.child[1] TSRMLS_CC);
+ zend_ast_evaluate(&op1, (&ast->u.child)[0] TSRMLS_CC);
+ zend_ast_evaluate(&op2, (&ast->u.child)[1] TSRMLS_CC);
is_identical_function(result, &op1, &op2 TSRMLS_CC);
zval_dtor(&op1);
zval_dtor(&op2);
break;
case ZEND_IS_NOT_IDENTICAL:
- zend_ast_evaluate(&op1, ast->u.child[0] TSRMLS_CC);
- zend_ast_evaluate(&op2, ast->u.child[1] TSRMLS_CC);
+ zend_ast_evaluate(&op1, (&ast->u.child)[0] TSRMLS_CC);
+ zend_ast_evaluate(&op2, (&ast->u.child)[1] TSRMLS_CC);
is_not_identical_function(result, &op1, &op2 TSRMLS_CC);
zval_dtor(&op1);
zval_dtor(&op2);
break;
case ZEND_IS_EQUAL:
- zend_ast_evaluate(&op1, ast->u.child[0] TSRMLS_CC);
- zend_ast_evaluate(&op2, ast->u.child[1] TSRMLS_CC);
+ zend_ast_evaluate(&op1, (&ast->u.child)[0] TSRMLS_CC);
+ zend_ast_evaluate(&op2, (&ast->u.child)[1] TSRMLS_CC);
is_equal_function(result, &op1, &op2 TSRMLS_CC);
zval_dtor(&op1);
zval_dtor(&op2);
break;
case ZEND_IS_NOT_EQUAL:
- zend_ast_evaluate(&op1, ast->u.child[0] TSRMLS_CC);
- zend_ast_evaluate(&op2, ast->u.child[1] TSRMLS_CC);
+ zend_ast_evaluate(&op1, (&ast->u.child)[0] TSRMLS_CC);
+ zend_ast_evaluate(&op2, (&ast->u.child)[1] TSRMLS_CC);
is_not_equal_function(result, &op1, &op2 TSRMLS_CC);
zval_dtor(&op1);
zval_dtor(&op2);
break;
case ZEND_IS_SMALLER:
- zend_ast_evaluate(&op1, ast->u.child[0] TSRMLS_CC);
- zend_ast_evaluate(&op2, ast->u.child[1] TSRMLS_CC);
+ zend_ast_evaluate(&op1, (&ast->u.child)[0] TSRMLS_CC);
+ zend_ast_evaluate(&op2, (&ast->u.child)[1] TSRMLS_CC);
is_smaller_function(result, &op1, &op2 TSRMLS_CC);
zval_dtor(&op1);
zval_dtor(&op2);
break;
case ZEND_IS_SMALLER_OR_EQUAL:
- zend_ast_evaluate(&op1, ast->u.child[0] TSRMLS_CC);
- zend_ast_evaluate(&op2, ast->u.child[1] TSRMLS_CC);
+ zend_ast_evaluate(&op1, (&ast->u.child)[0] TSRMLS_CC);
+ zend_ast_evaluate(&op2, (&ast->u.child)[1] TSRMLS_CC);
is_smaller_or_equal_function(result, &op1, &op2
TSRMLS_CC);
zval_dtor(&op1);
zval_dtor(&op2);
@@ -230,9 +230,9 @@ ZEND_API void zend_ast_evaluate(zval *result, zend_ast *ast
TSRMLS_DC)
}
break;
case ZEND_BOOL_AND:
- zend_ast_evaluate(&op1, ast->u.child[0] TSRMLS_CC);
+ zend_ast_evaluate(&op1, (&ast->u.child)[0] TSRMLS_CC);
if (zend_is_true(&op1)) {
- zend_ast_evaluate(&op2, ast->u.child[1]
TSRMLS_CC);
+ zend_ast_evaluate(&op2, (&ast->u.child)[1]
TSRMLS_CC);
ZVAL_BOOL(result, zend_is_true(&op2));
zval_dtor(&op2);
} else {
@@ -241,39 +241,39 @@ ZEND_API void zend_ast_evaluate(zval *result, zend_ast
*ast TSRMLS_DC)
zval_dtor(&op1);
break;
case ZEND_BOOL_OR:
- zend_ast_evaluate(&op1, ast->u.child[0] TSRMLS_CC);
+ zend_ast_evaluate(&op1, (&ast->u.child)[0] TSRMLS_CC);
if (zend_is_true(&op1)) {
ZVAL_BOOL(result, 1);
} else {
- zend_ast_evaluate(&op2, ast->u.child[1]
TSRMLS_CC);
+ zend_ast_evaluate(&op2, (&ast->u.child)[1]
TSRMLS_CC);
ZVAL_BOOL(result, zend_is_true(&op2));
zval_dtor(&op2);
}
zval_dtor(&op1);
break;
case ZEND_SELECT:
- zend_ast_evaluate(&op1, ast->u.child[0] TSRMLS_CC);
+ zend_ast_evaluate(&op1, (&ast->u.child)[0] TSRMLS_CC);
if (zend_is_true(&op1)) {
- if (!ast->u.child[1]) {
+ if (!(&ast->u.child)[1]) {
*result = op1;
} else {
- zend_ast_evaluate(result,
ast->u.child[1] TSRMLS_CC);
+ zend_ast_evaluate(result,
(&ast->u.child)[1] TSRMLS_CC);
zval_dtor(&op1);
}
} else {
- zend_ast_evaluate(result, ast->u.child[2]
TSRMLS_CC);
+ zend_ast_evaluate(result, (&ast->u.child)[2]
TSRMLS_CC);
zval_dtor(&op1);
}
break;
case ZEND_UNARY_PLUS:
ZVAL_LONG(&op1, 0);
- zend_ast_evaluate(&op2, ast->u.child[0] TSRMLS_CC);
+ zend_ast_evaluate(&op2, (&ast->u.child)[0] TSRMLS_CC);
add_function(result, &op1, &op2 TSRMLS_CC);
zval_dtor(&op2);
break;
case ZEND_UNARY_MINUS:
ZVAL_LONG(&op1, 0);
- zend_ast_evaluate(&op2, ast->u.child[0] TSRMLS_CC);
+ zend_ast_evaluate(&op2, (&ast->u.child)[0] TSRMLS_CC);
sub_function(result, &op1, &op2 TSRMLS_CC);
zval_dtor(&op2);
break;
@@ -284,29 +284,29 @@ ZEND_API void zend_ast_evaluate(zval *result, zend_ast
*ast TSRMLS_DC)
ZEND_API zend_ast *zend_ast_copy(zend_ast *ast)
{
- if (ast == NULL) {
- return NULL;
+ if (ast == NULL) {
+ return NULL;
} else if (ast->kind == ZEND_CONST) {
- zend_ast *node = zend_ast_create_constant(ast->u.val);
- zval_copy_ctor(node->u.val);
- return node;
+ zend_ast *copy = zend_ast_create_constant(ast->u.val);
+ zval_copy_ctor(copy->u.val);
+ return copy;
} else {
switch (ast->children) {
case 1:
return zend_ast_create_unary(
ast->kind,
- zend_ast_copy(ast->u.child[0]));
+ zend_ast_copy((&ast->u.child)[0]));
case 2:
return zend_ast_create_binary(
ast->kind,
- zend_ast_copy(ast->u.child[0]),
- zend_ast_copy(ast->u.child[1]));
+ zend_ast_copy((&ast->u.child)[0]),
+ zend_ast_copy((&ast->u.child)[1]));
case 3:
return zend_ast_create_ternary(
ast->kind,
- zend_ast_copy(ast->u.child[0]),
- zend_ast_copy(ast->u.child[1]),
- zend_ast_copy(ast->u.child[2]));
+ zend_ast_copy((&ast->u.child)[0]),
+ zend_ast_copy((&ast->u.child)[1]),
+ zend_ast_copy((&ast->u.child)[2]));
}
}
return NULL;
@@ -320,8 +320,8 @@ ZEND_API void zend_ast_destroy(zend_ast *ast)
zval_dtor(ast->u.val);
} else {
for (i = 0; i < ast->children; i++) {
- if (ast->u.child[i]) {
- zend_ast_destroy(ast->u.child[i]);
+ if ((&ast->u.child)[i]) {
+ zend_ast_destroy((&ast->u.child)[i]);
}
}
}
diff --git a/Zend/zend_ast.h b/Zend/zend_ast.h
index 9cdcbf5..27d595e 100644
--- a/Zend/zend_ast.h
+++ b/Zend/zend_ast.h
@@ -41,7 +41,7 @@ struct _zend_ast {
unsigned short children;
union {
zval *val;
- zend_ast *child[1];
+ zend_ast *child;
} u;
};
diff --git a/Zend/zend_extensions.h b/Zend/zend_extensions.h
index e7f289a..e59c9ad 100644
--- a/Zend/zend_extensions.h
+++ b/Zend/zend_extensions.h
@@ -28,7 +28,7 @@
/* The first number is the engine version and the rest is the date.
* This way engine 2/3 API no. is always greater than engine 1 API no..
*/
-#define ZEND_EXTENSION_API_NO 220131106
+#define ZEND_EXTENSION_API_NO 220131107
typedef struct _zend_extension_version_info {
int zend_extension_api_no;
diff --git a/Zend/zend_language_parser.y b/Zend/zend_language_parser.y
index 8041acc..a71dfb0 100644
--- a/Zend/zend_language_parser.y
+++ b/Zend/zend_language_parser.y
@@ -953,6 +953,8 @@ static_class_constant:
static_scalar: /* compile-time evaluated scalars */
static_scalar_value { zend_do_constant_expression(&$$, $1.u.ast
TSRMLS_CC); }
+ | T_ARRAY '(' static_array_pair_list ')' { $$ = $3;
Z_TYPE($$.u.constant) = IS_CONSTANT_ARRAY; }
+ | '[' static_array_pair_list ']' { $$ = $2; Z_TYPE($$.u.constant)
= IS_CONSTANT_ARRAY; }
;
static_scalar_value:
@@ -963,8 +965,6 @@ static_scalar_value:
| T_NS_SEPARATOR namespace_name { char *tmp =
estrndup(Z_STRVAL($2.u.constant), Z_STRLEN($2.u.constant)+1); memcpy(&(tmp[1]),
Z_STRVAL($2.u.constant), Z_STRLEN($2.u.constant)+1); tmp[0] = '\\';
efree(Z_STRVAL($2.u.constant)); Z_STRVAL($2.u.constant) = tmp;
++Z_STRLEN($2.u.constant); zend_do_fetch_constant(&$$, NULL, &$2, ZEND_CT, 0
TSRMLS_CC); $$.u.ast = zend_ast_create_constant(&$$.u.constant); }
| static_class_constant { $$.u.ast =
zend_ast_create_constant(&$1.u.constant); }
| T_CLASS_C { $$.u.ast =
zend_ast_create_constant(&$1.u.constant); }
- | T_ARRAY '(' static_array_pair_list ')' { $$ = $3;
Z_TYPE($$.u.constant) = IS_CONSTANT_ARRAY; $$.u.ast =
zend_ast_create_constant(&$$.u.constant); }
- | '[' static_array_pair_list ']' { $$ = $2; Z_TYPE($$.u.constant)
= IS_CONSTANT_ARRAY; $$.u.ast = zend_ast_create_constant(&$$.u.constant); }
| static_operation { $$ = $1; }
;
diff --git a/ext/opcache/zend_accelerator_util_funcs.c
b/ext/opcache/zend_accelerator_util_funcs.c
index 8ced274..279046c 100644
--- a/ext/opcache/zend_accelerator_util_funcs.c
+++ b/ext/opcache/zend_accelerator_util_funcs.c
@@ -257,10 +257,10 @@ static zend_ast *zend_ast_clone(zend_ast *ast TSRMLS_DC)
node->kind = ast->kind;
node->children = ast->children;
for (i = 0; i < ast->children; i++) {
- if (ast->u.child[i]) {
- node->u.child[i] =
zend_ast_clone(ast->u.child[i] TSRMLS_CC);
+ if ((&ast->u.child)[i]) {
+ (&node->u.child)[i] =
zend_ast_clone((&ast->u.child)[i] TSRMLS_CC);
} else {
- node->u.child[i] = NULL;
+ (&node->u.child)[i] = NULL;
}
}
}
diff --git a/ext/opcache/zend_persist.c b/ext/opcache/zend_persist.c
index bf13865..17147ac 100644
--- a/ext/opcache/zend_persist.c
+++ b/ext/opcache/zend_persist.c
@@ -152,8 +152,8 @@ static zend_ast *zend_persist_ast(zend_ast *ast TSRMLS_DC)
} else {
node = zend_accel_memdup(ast, sizeof(zend_ast) +
sizeof(zend_ast*) * (ast->children - 1));
for (i = 0; i < ast->children; i++) {
- if (node->u.child[i]) {
- node->u.child[i] =
zend_persist_ast(node->u.child[i] TSRMLS_CC);
+ if ((&node->u.child)[i]) {
+ (&node->u.child)[i] =
zend_persist_ast((&node->u.child)[i] TSRMLS_CC);
}
}
}
diff --git a/ext/opcache/zend_persist_calc.c b/ext/opcache/zend_persist_calc.c
index 9143813..8947c72 100644
--- a/ext/opcache/zend_persist_calc.c
+++ b/ext/opcache/zend_persist_calc.c
@@ -104,8 +104,8 @@ static uint zend_persist_ast_calc(zend_ast *ast TSRMLS_DC)
} else {
ADD_SIZE(sizeof(zend_ast) + sizeof(zend_ast*) * (ast->children
- 1));
for (i = 0; i < ast->children; i++) {
- if (ast->u.child[i]) {
- ADD_SIZE(zend_persist_ast_calc(ast->u.child[i]
TSRMLS_CC));
+ if ((&ast->u.child)[i]) {
+
ADD_SIZE(zend_persist_ast_calc((&ast->u.child)[i] TSRMLS_CC));
}
}
}
--
PHP CVS Mailing List (http://www.php.net/)
To unsubscribe, visit: http://www.php.net/unsub.php