mirror of
https://github.com/php/php-src.git
synced 2024-09-21 09:57:23 +00:00
Removed assumption that \\ will be present
The function zend_add_ns_func_name_literal is called if the parser finds a function that is not in the global or current namespace. It assumes such a function will have a \\ in it, which is no longer true with the use function patch. The code change above removes that assumption and makes the test work: PASS use and use function with the same alias [Zend/tests/use_function/conflicting_use_alias.phpt]
This commit is contained in:
parent
2dbbb8ae4b
commit
6b385ebc85
@ -426,12 +426,16 @@ int zend_add_ns_func_name_literal(zend_op_array *op_array, const zval *zv TSRMLS
|
||||
lc_literal = zend_add_literal(CG(active_op_array), &c TSRMLS_CC);
|
||||
CALCULATE_LITERAL_HASH(lc_literal);
|
||||
|
||||
ns_separator = (const char*)zend_memrchr(Z_STRVAL_P(zv), '\\', Z_STRLEN_P(zv)) + 1;
|
||||
lc_len = Z_STRLEN_P(zv) - (ns_separator - Z_STRVAL_P(zv));
|
||||
lc_name = zend_str_tolower_dup(ns_separator, lc_len);
|
||||
ZVAL_STRINGL(&c, lc_name, lc_len, 0);
|
||||
lc_literal = zend_add_literal(CG(active_op_array), &c TSRMLS_CC);
|
||||
CALCULATE_LITERAL_HASH(lc_literal);
|
||||
ns_separator = (const char*)zend_memrchr(Z_STRVAL_P(zv), '\\', Z_STRLEN_P(zv));
|
||||
|
||||
if (ns_separator != NULL) {
|
||||
ns_separator += 1;
|
||||
lc_len = Z_STRLEN_P(zv) - (ns_separator - Z_STRVAL_P(zv));
|
||||
lc_name = zend_str_tolower_dup(ns_separator, lc_len);
|
||||
ZVAL_STRINGL(&c, lc_name, lc_len, 0);
|
||||
lc_literal = zend_add_literal(CG(active_op_array), &c TSRMLS_CC);
|
||||
CALCULATE_LITERAL_HASH(lc_literal);
|
||||
}
|
||||
|
||||
return ret;
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user