|
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