Skip to content

Commit 612e77e

Browse files
committed
Fix issue with global fallback not in global space
1 parent d7e3aca commit 612e77e

File tree

2 files changed

+12
-10
lines changed

2 files changed

+12
-10
lines changed

Zend/zend_compile.c

Lines changed: 9 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1962,7 +1962,7 @@ int zend_do_begin_function_call(znode *function_name, zend_bool check_namespace
19621962
char *lcname;
19631963
char *is_compound = memchr(Z_STRVAL(function_name->u.constant), '\\', Z_STRLEN(function_name->u.constant));
19641964

1965-
zend_resolve_function_name(function_name, check_namespace TSRMLS_CC);
1965+
zend_resolve_function_name(function_name, &check_namespace TSRMLS_CC);
19661966

19671967
if (check_namespace && CG(current_namespace) && !is_compound) {
19681968
/* We assume we call function from the current namespace
@@ -2101,7 +2101,7 @@ void zend_do_begin_dynamic_function_call(znode *function_name, int ns_call TSRML
21012101
}
21022102
/* }}} */
21032103

2104-
void zend_resolve_non_class_name(znode *element_name, zend_bool check_namespace, zend_bool case_sensitive, HashTable *current_import_sub TSRMLS_DC) /* {{{ */
2104+
void zend_resolve_non_class_name(znode *element_name, zend_bool *check_namespace, zend_bool case_sensitive, HashTable *current_import_sub TSRMLS_DC) /* {{{ */
21052105
{
21062106
znode tmp;
21072107
int len;
@@ -2115,7 +2115,7 @@ void zend_resolve_non_class_name(znode *element_name, zend_bool check_namespace,
21152115
return;
21162116
}
21172117

2118-
if(!check_namespace) {
2118+
if(!*check_namespace) {
21192119
return;
21202120
}
21212121

@@ -2132,6 +2132,7 @@ void zend_resolve_non_class_name(znode *element_name, zend_bool check_namespace,
21322132
element_name->u.constant = **ns;
21332133
zval_copy_ctor(&element_name->u.constant);
21342134
efree(lookup_name);
2135+
*check_namespace = 0;
21352136
return;
21362137
}
21372138
efree(lookup_name);
@@ -2156,6 +2157,7 @@ void zend_resolve_non_class_name(znode *element_name, zend_bool check_namespace,
21562157
zend_do_build_namespace_name(&tmp, &tmp, element_name TSRMLS_CC);
21572158
*element_name = tmp;
21582159
efree(lookup_name);
2160+
*check_namespace = 0;
21592161
return;
21602162
}
21612163
efree(lookup_name);
@@ -2174,13 +2176,13 @@ void zend_resolve_non_class_name(znode *element_name, zend_bool check_namespace,
21742176
}
21752177
/* }}} */
21762178

2177-
void zend_resolve_function_name(znode *element_name, zend_bool check_namespace TSRMLS_DC) /* {{{ */
2179+
void zend_resolve_function_name(znode *element_name, zend_bool *check_namespace TSRMLS_DC) /* {{{ */
21782180
{
21792181
zend_resolve_non_class_name(element_name, check_namespace, 0, CG(current_import_function) TSRMLS_CC);
21802182
}
21812183
/* }}} */
21822184

2183-
void zend_resolve_const_name(znode *element_name, zend_bool check_namespace TSRMLS_DC) /* {{{ */
2185+
void zend_resolve_const_name(znode *element_name, zend_bool *check_namespace TSRMLS_DC) /* {{{ */
21842186
{
21852187
zend_resolve_non_class_name(element_name, check_namespace, 1, CG(current_import_const) TSRMLS_CC);
21862188
}
@@ -5688,7 +5690,7 @@ void zend_do_fetch_constant(znode *result, znode *constant_container, znode *con
56885690
break;
56895691
}
56905692

5691-
zend_resolve_const_name(constant_name, check_namespace TSRMLS_CC);
5693+
zend_resolve_const_name(constant_name, &check_namespace TSRMLS_CC);
56925694

56935695
if(!compound) {
56945696
fetch_type |= IS_CONSTANT_UNQUALIFIED;
@@ -5700,7 +5702,7 @@ void zend_do_fetch_constant(znode *result, znode *constant_container, znode *con
57005702
case ZEND_RT:
57015703
compound = memchr(Z_STRVAL(constant_name->u.constant), '\\', Z_STRLEN(constant_name->u.constant));
57025704

5703-
zend_resolve_const_name(constant_name, check_namespace TSRMLS_CC);
5705+
zend_resolve_const_name(constant_name, &check_namespace TSRMLS_CC);
57045706

57055707
if(zend_constant_ct_subst(result, &constant_name->u.constant, 1 TSRMLS_CC)) {
57065708
break;

Zend/zend_compile.h

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -437,9 +437,9 @@ ZEND_API char *zend_get_compiled_filename(TSRMLS_D);
437437
ZEND_API int zend_get_compiled_lineno(TSRMLS_D);
438438
ZEND_API size_t zend_get_scanned_file_offset(TSRMLS_D);
439439

440-
void zend_resolve_non_class_name(znode *element_name, zend_bool check_namespace, zend_bool case_sensitive, HashTable *current_import_sub TSRMLS_DC);
441-
void zend_resolve_function_name(znode *element_name, zend_bool check_namespace TSRMLS_DC);
442-
void zend_resolve_const_name(znode *element_name, zend_bool check_namespace TSRMLS_DC);
440+
void zend_resolve_non_class_name(znode *element_name, zend_bool *check_namespace, zend_bool case_sensitive, HashTable *current_import_sub TSRMLS_DC);
441+
void zend_resolve_function_name(znode *element_name, zend_bool *check_namespace TSRMLS_DC);
442+
void zend_resolve_const_name(znode *element_name, zend_bool *check_namespace TSRMLS_DC);
443443
void zend_resolve_class_name(znode *class_name, ulong fetch_type, int check_ns_name TSRMLS_DC);
444444
ZEND_API const char* zend_get_compiled_variable_name(const zend_op_array *op_array, zend_uint var, int* name_len);
445445

0 commit comments

Comments
 (0)