Skip to content

Commit c3efd97

Browse files
committed
Move efree back
1 parent 35a5491 commit c3efd97

File tree

1 file changed

+11
-10
lines changed

1 file changed

+11
-10
lines changed

Zend/zend_inheritance.c

+11-10
Original file line numberDiff line numberDiff line change
@@ -2188,7 +2188,7 @@ ZEND_API void zend_do_implement_interface(zend_class_entry *ce, zend_class_entry
21882188
}
21892189
/* }}} */
21902190

2191-
static void zend_do_implement_interfaces(zend_class_entry *ce, zend_class_entry **interfaces) /* {{{ */
2191+
static void zend_do_implement_interfaces(zend_class_entry *ce, zend_class_entry **interfaces, size_t num_interface_names) /* {{{ */
21922192
{
21932193
zend_class_entry *iface;
21942194
uint32_t num_parent_interfaces = ce->parent ? ce->parent->num_interfaces : 0;
@@ -2232,6 +2232,14 @@ static void zend_do_implement_interfaces(zend_class_entry *ce, zend_class_entry
22322232
}
22332233
}
22342234

2235+
if (!(ce->ce_flags & ZEND_ACC_CACHED)) {
2236+
for (i = 0; i < num_interface_names; i++) {
2237+
zend_string_release_ex(ce->interface_names[i].name, 0);
2238+
zend_string_release_ex(ce->interface_names[i].lc_name, 0);
2239+
}
2240+
efree(ce->interface_names);
2241+
}
2242+
22352243
ce->num_interfaces = num_interfaces;
22362244
ce->interfaces = interfaces;
22372245
ce->ce_flags |= ZEND_ACC_RESOLVED_INTERFACES;
@@ -3589,14 +3597,7 @@ ZEND_API zend_class_entry *zend_do_link_class(zend_class_entry *ce, zend_string
35893597
Z_CE_P(zv) = ce;
35903598
}
35913599

3592-
if (!(ce->ce_flags & ZEND_ACC_CACHED)) {
3593-
for (i = 0; i < ce->num_interfaces; i++) {
3594-
zend_string_release_ex(ce->interface_names[i].name, 0);
3595-
zend_string_release_ex(ce->interface_names[i].lc_name, 0);
3596-
}
3597-
efree(ce->interface_names);
3598-
}
3599-
3600+
size_t num_interface_names = ce->num_interfaces;
36003601
ce->num_interfaces = num_implementable_interfaces;
36013602

36023603
if (CG(unlinked_uses)) {
@@ -3638,7 +3639,7 @@ ZEND_API zend_class_entry *zend_do_link_class(zend_class_entry *ce, zend_string
36383639
memcpy(interfaces + num_parent_interfaces, traits_and_interfaces + ce->num_traits,
36393640
sizeof(zend_class_entry *) * ce->num_interfaces);
36403641

3641-
zend_do_implement_interfaces(ce, interfaces);
3642+
zend_do_implement_interfaces(ce, interfaces, num_interface_names);
36423643
} else if (parent && parent->num_interfaces) {
36433644
zend_do_inherit_interfaces(ce, parent);
36443645
}

0 commit comments

Comments
 (0)