Skip to content

Commit ee24baa

Browse files
committed
keep cased namespace names
1 parent ac364dc commit ee24baa

File tree

1 file changed

+6
-12
lines changed

1 file changed

+6
-12
lines changed

Zend/zend_namespaces.c

Lines changed: 6 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -31,7 +31,7 @@ zend_class_entry *create_namespace(zend_string *name) {
3131
return ns;
3232
}
3333

34-
static zend_class_entry *insert_namespace(const zend_string *name) {
34+
static zend_class_entry *insert_namespace(zend_string *name, zend_string *lc_name) {
3535
zend_class_entry *parent_ns = EG(global_namespace);
3636
zend_class_entry *ns = parent_ns;
3737
const char *start = ZSTR_VAL(name);
@@ -42,23 +42,17 @@ static zend_class_entry *insert_namespace(const zend_string *name) {
4242
while (pos <= end) {
4343
if (pos == end || *pos == '\\') {
4444
len = pos - start;
45-
zend_string *needle = zend_string_init(ZSTR_VAL(name), len, 0);
45+
zend_string *needle = zend_string_init(ZSTR_VAL(lc_name), len, 0);
4646

4747
ns = zend_hash_find_ptr(EG(namespaces), needle);
4848

4949
if (!ns) {
50-
zend_string *interned_name = zend_new_interned_string(needle);
50+
zend_string *interned_name = zend_string_init(ZSTR_VAL(name), len, 1);
5151
ns = create_namespace(interned_name);
5252
ns->lexical_scope = parent_ns;
53-
zend_hash_add_ptr(EG(namespaces), interned_name, ns);
54-
55-
/* sometimes, opcache refuses to intern the string */
56-
if (interned_name == needle) {
57-
zend_string_release(interned_name);
58-
}
59-
} else {
60-
zend_string_release(needle);
53+
zend_hash_add_ptr(EG(namespaces), lc_name, ns);
6154
}
55+
zend_string_release(needle);
6256

6357
parent_ns = ns;
6458
}
@@ -85,7 +79,7 @@ zend_class_entry *zend_resolve_namespace(zend_string *name) {
8579
zend_class_entry *ns = zend_hash_find_ptr(EG(namespaces), lc_name);
8680

8781
if (!ns) {
88-
ns = insert_namespace(lc_name);
82+
ns = insert_namespace(name, lc_name);
8983
}
9084

9185
zend_string_release(lc_name);

0 commit comments

Comments
 (0)