@@ -31,7 +31,7 @@ zend_class_entry *create_namespace(zend_string *name) {
31
31
return ns ;
32
32
}
33
33
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 ) {
35
35
zend_class_entry * parent_ns = EG (global_namespace );
36
36
zend_class_entry * ns = parent_ns ;
37
37
const char * start = ZSTR_VAL (name );
@@ -42,23 +42,17 @@ static zend_class_entry *insert_namespace(const zend_string *name) {
42
42
while (pos <= end ) {
43
43
if (pos == end || * pos == '\\' ) {
44
44
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 );
46
46
47
47
ns = zend_hash_find_ptr (EG (namespaces ), needle );
48
48
49
49
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 );
51
51
ns = create_namespace (interned_name );
52
52
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 );
61
54
}
55
+ zend_string_release (needle );
62
56
63
57
parent_ns = ns ;
64
58
}
@@ -85,7 +79,7 @@ zend_class_entry *zend_resolve_namespace(zend_string *name) {
85
79
zend_class_entry * ns = zend_hash_find_ptr (EG (namespaces ), lc_name );
86
80
87
81
if (!ns ) {
88
- ns = insert_namespace (lc_name );
82
+ ns = insert_namespace (name , lc_name );
89
83
}
90
84
91
85
zend_string_release (lc_name );
0 commit comments