diff options
author | Nikita Popov <nikita.ppv@gmail.com> | 2020-04-02 16:34:21 +0200 |
---|---|---|
committer | Nikita Popov <nikita.ppv@gmail.com> | 2020-04-02 16:34:21 +0200 |
commit | b3c7ab66fb13e803e417bfb89ac5d01aa8acffec (patch) | |
tree | b3144b78753ff0187fa2aa0f307c870ea6956974 | |
parent | 87375fa2bea3e9f0aafaa31055059891d6852cab (diff) | |
parent | cf68bc413bd7548643058a63dbf4d907346d184c (diff) | |
download | php-git-b3c7ab66fb13e803e417bfb89ac5d01aa8acffec.tar.gz |
Merge branch 'PHP-7.3' into PHP-7.4
* PHP-7.3:
Fixed bug #79434
-rw-r--r-- | Zend/tests/case_insensitive_constant_deprecation.phpt | 24 | ||||
-rw-r--r-- | Zend/zend_execute.c | 12 |
2 files changed, 22 insertions, 14 deletions
diff --git a/Zend/tests/case_insensitive_constant_deprecation.phpt b/Zend/tests/case_insensitive_constant_deprecation.phpt index e7a92c8c4c..6ab18b3763 100644 --- a/Zend/tests/case_insensitive_constant_deprecation.phpt +++ b/Zend/tests/case_insensitive_constant_deprecation.phpt @@ -9,6 +9,7 @@ namespace { var_dump(FOO); // Ok var_dump(foo); // Deprecated + var_dump(\foo); // Deprecated var_dump(NS\FOO); // Ok var_dump(ns\FOO); // Ok @@ -72,10 +73,13 @@ int(42) Deprecated: Case-insensitive constants are deprecated. The correct casing for this constant is "FOO" in %s on line 8 int(42) + +Deprecated: Case-insensitive constants are deprecated. The correct casing for this constant is "FOO" in %s on line 9 +int(42) int(24) int(24) -Deprecated: Case-insensitive constants are deprecated. The correct casing for this constant is "NS\FOO" in %s on line 12 +Deprecated: Case-insensitive constants are deprecated. The correct casing for this constant is "NS\FOO" in %s on line 13 int(24) bool(true) bool(true) @@ -84,24 +88,24 @@ bool(true) bool(true) int(42) -Deprecated: Case-insensitive constants are deprecated. The correct casing for this constant is "FOO" in %s on line 21 +Deprecated: Case-insensitive constants are deprecated. The correct casing for this constant is "FOO" in %s on line 22 int(42) int(24) int(24) -Deprecated: Case-insensitive constants are deprecated. The correct casing for this constant is "NS\FOO" in %s on line 24 +Deprecated: Case-insensitive constants are deprecated. The correct casing for this constant is "NS\FOO" in %s on line 25 int(24) int(24) -Deprecated: Case-insensitive constants are deprecated. The correct casing for this constant is "NS\FOO" in %s on line 29 +Deprecated: Case-insensitive constants are deprecated. The correct casing for this constant is "NS\FOO" in %s on line 30 int(24) int(24) -Deprecated: Case-insensitive constants are deprecated. The correct casing for this constant is "NS\FOO" in %s on line 34 +Deprecated: Case-insensitive constants are deprecated. The correct casing for this constant is "NS\FOO" in %s on line 35 int(24) int(42) -Deprecated: Case-insensitive constants are deprecated. The correct casing for this constant is "FOO" in %s on line 39 +Deprecated: Case-insensitive constants are deprecated. The correct casing for this constant is "FOO" in %s on line 40 int(42) bool(true) bool(true) @@ -110,18 +114,18 @@ bool(true) bool(true) int(42) -Deprecated: Case-insensitive constants are deprecated. The correct casing for this constant is "FOO" in %s on line 48 +Deprecated: Case-insensitive constants are deprecated. The correct casing for this constant is "FOO" in %s on line 49 int(42) int(24) int(24) -Deprecated: Case-insensitive constants are deprecated. The correct casing for this constant is "NS\FOO" in %s on line 51 +Deprecated: Case-insensitive constants are deprecated. The correct casing for this constant is "NS\FOO" in %s on line 52 int(24) int(42) -Deprecated: Case-insensitive constants are deprecated. The correct casing for this constant is "FOO" in %s on line 55 +Deprecated: Case-insensitive constants are deprecated. The correct casing for this constant is "FOO" in %s on line 56 int(42) int(43) -Deprecated: Case-insensitive constants are deprecated. The correct casing for this constant is "FOO" in %s on line 59 +Deprecated: Case-insensitive constants are deprecated. The correct casing for this constant is "FOO" in %s on line 60 int(43) diff --git a/Zend/zend_execute.c b/Zend/zend_execute.c index e9017ecde9..ef4c829ce6 100644 --- a/Zend/zend_execute.c +++ b/Zend/zend_execute.c @@ -4416,11 +4416,15 @@ static zend_always_inline int _zend_quick_get_constant( is_deprecated = !zend_string_equals(c->name, Z_STR_P(access_key)); } else { check_short_name: - ns_sep = zend_memrchr(ZSTR_VAL(c->name), '\\', ZSTR_LEN(c->name)); - ZEND_ASSERT(ns_sep); /* Namespaces are always case-insensitive. Only compare shortname. */ - shortname_offset = ns_sep - ZSTR_VAL(c->name) + 1; - shortname_len = ZSTR_LEN(c->name) - shortname_offset; + ns_sep = zend_memrchr(ZSTR_VAL(c->name), '\\', ZSTR_LEN(c->name)); + if (ns_sep) { + shortname_offset = ns_sep - ZSTR_VAL(c->name) + 1; + shortname_len = ZSTR_LEN(c->name) - shortname_offset; + } else { + shortname_offset = 0; + shortname_len = ZSTR_LEN(c->name); + } is_deprecated = memcmp(ZSTR_VAL(c->name) + shortname_offset, Z_STRVAL_P(orig_key - 1) + shortname_offset, shortname_len) != 0; } |