@@ -28,10 +28,10 @@ static zend_class_entry *global_namespace = NULL;
28
28
static HashTable namespaces ;
29
29
30
30
static zend_class_entry * create_namespace (zend_string * name ) {
31
- zend_class_entry * ns = pemalloc (sizeof (zend_class_entry ), 1 );
32
- memset (ns , 0 , sizeof (zend_class_entry ));
31
+ zend_class_entry * ns = pecalloc (1 , sizeof (zend_class_entry ), 1 );
33
32
zend_initialize_class_data (ns , 1 );
34
33
ns -> type = ZEND_NAMESPACE_CLASS ;
34
+ ns -> ce_flags |= ZEND_ACC_UNINSTANTIABLE ;
35
35
36
36
zend_string * interned_name = zend_new_interned_string (zend_string_copy (name ));
37
37
ns -> name = interned_name ;
@@ -64,13 +64,12 @@ static zend_class_entry *insert_namespace(const zend_string *name) {
64
64
zend_string * needle = zend_string_init (ZSTR_VAL (current_ns .s ), ZSTR_LEN (current_ns .s ), 0 );
65
65
ns = zend_hash_find_ptr (& namespaces , needle );
66
66
67
+ zend_string_release (part );
67
68
if (!ns ) {
68
69
ns = create_namespace (needle );
69
70
ns -> parent = parent_ns ;
70
- zend_hash_add_ptr (& namespaces , current_ns . s , ns );
71
+ zend_hash_add_ptr (& namespaces , zend_string_copy ( needle ) , ns );
71
72
}
72
-
73
- zend_string_release (part );
74
73
zend_string_release (needle );
75
74
76
75
parent_ns = ns ;
@@ -120,12 +119,5 @@ void zend_destroy_namespaces(void) {
120
119
return ;
121
120
}
122
121
123
- zend_class_entry * ns = NULL ;
124
- ZEND_HASH_FOREACH_PTR (& namespaces , ns ) {
125
- zend_string_release (ns -> name );
126
- } ZEND_HASH_FOREACH_END ();
127
-
128
122
zend_hash_destroy (& namespaces );
129
- zend_string_release (global_namespace -> name );
130
- pefree (global_namespace , 1 );
131
123
}
0 commit comments