|
27 | 27 | static zend_class_entry *global_namespace = NULL; |
28 | 28 | static HashTable namespaces; |
29 | 29 |
|
30 | | -static zend_class_entry *create_namespace(zend_string *name) { |
31 | | - zend_class_entry *ns = pecalloc(1, sizeof(zend_class_entry), 1); |
| 30 | +static zend_class_entry *create_namespace(zend_string *interned_name) { |
| 31 | + zend_class_entry *ns = malloc(sizeof(zend_class_entry)); |
32 | 32 | zend_initialize_class_data(ns, 1); |
33 | 33 | ns->type = ZEND_NAMESPACE_CLASS; |
34 | 34 | ns->ce_flags |= ZEND_ACC_UNINSTANTIABLE; |
35 | 35 |
|
36 | | - zend_string *interned_name = zend_new_interned_string(zend_string_copy(name)); |
37 | 36 | ns->name = interned_name; |
38 | 37 |
|
39 | 38 | return ns; |
@@ -61,14 +60,14 @@ static zend_class_entry *insert_namespace(const zend_string *name) { |
61 | 60 | smart_str_appendl(¤t_ns, ZSTR_VAL(part), ZSTR_LEN(part)); |
62 | 61 | smart_str_0(¤t_ns); |
63 | 62 |
|
64 | | - zend_string *needle = zend_string_init(ZSTR_VAL(current_ns.s), ZSTR_LEN(current_ns.s), 0); |
| 63 | + zend_string *needle = zend_string_init_interned(ZSTR_VAL(current_ns.s), ZSTR_LEN(current_ns.s), 1); |
65 | 64 | ns = zend_hash_find_ptr(&namespaces, needle); |
66 | 65 |
|
67 | 66 | zend_string_release(part); |
68 | 67 | if (!ns) { |
69 | 68 | ns = create_namespace(needle); |
70 | 69 | ns->parent = parent_ns; |
71 | | - zend_hash_add_ptr(&namespaces, zend_string_copy(needle), ns); |
| 70 | + zend_hash_add_ptr(&namespaces, needle, ns); |
72 | 71 | } |
73 | 72 | zend_string_release(needle); |
74 | 73 |
|
|
0 commit comments