Skip to content

Commit e662b4a

Browse files
committed
fix memory leak
1 parent dc799bc commit e662b4a

File tree

2 files changed

+6
-7
lines changed

2 files changed

+6
-7
lines changed

Zend/zend_namespaces.c

Lines changed: 4 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -27,13 +27,12 @@
2727
static zend_class_entry *global_namespace = NULL;
2828
static HashTable namespaces;
2929

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));
3232
zend_initialize_class_data(ns, 1);
3333
ns->type = ZEND_NAMESPACE_CLASS;
3434
ns->ce_flags |= ZEND_ACC_UNINSTANTIABLE;
3535

36-
zend_string *interned_name = zend_new_interned_string(zend_string_copy(name));
3736
ns->name = interned_name;
3837

3938
return ns;
@@ -61,14 +60,14 @@ static zend_class_entry *insert_namespace(const zend_string *name) {
6160
smart_str_appendl(&current_ns, ZSTR_VAL(part), ZSTR_LEN(part));
6261
smart_str_0(&current_ns);
6362

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);
6564
ns = zend_hash_find_ptr(&namespaces, needle);
6665

6766
zend_string_release(part);
6867
if (!ns) {
6968
ns = create_namespace(needle);
7069
ns->parent = parent_ns;
71-
zend_hash_add_ptr(&namespaces, zend_string_copy(needle), ns);
70+
zend_hash_add_ptr(&namespaces, needle, ns);
7271
}
7372
zend_string_release(needle);
7473

tests/classes/inner_classes/reflection_001.phpt

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -22,8 +22,8 @@ var_dump($ref->isProtected());
2222
var_dump($ref->isPublic());
2323
?>
2424
--EXPECT--
25-
string(24) "n\s\Outer\Middle\Inner"
26-
string(20) "Outer\Middle\Inner"
25+
string(22) "n\s\Outer\Middle\Inner"
26+
string(5) "Inner"
2727
bool(true)
2828
bool(false)
2929
bool(false)

0 commit comments

Comments
 (0)