Skip to content

Commit 865b011

Browse files
committed
Move efree back
1 parent d8d6838 commit 865b011

File tree

1 file changed

+11
-10
lines changed

1 file changed

+11
-10
lines changed

Zend/zend_inheritance.c

Lines changed: 11 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -2176,7 +2176,7 @@ ZEND_API void zend_do_implement_interface(zend_class_entry *ce, zend_class_entry
21762176
}
21772177
/* }}} */
21782178

2179-
static void zend_do_implement_interfaces(zend_class_entry *ce, zend_class_entry **interfaces) /* {{{ */
2179+
static void zend_do_implement_interfaces(zend_class_entry *ce, zend_class_entry **interfaces, size_t num_interface_names) /* {{{ */
21802180
{
21812181
zend_class_entry *iface;
21822182
uint32_t num_parent_interfaces = ce->parent ? ce->parent->num_interfaces : 0;
@@ -2220,6 +2220,14 @@ static void zend_do_implement_interfaces(zend_class_entry *ce, zend_class_entry
22202220
}
22212221
}
22222222

2223+
if (!(ce->ce_flags & ZEND_ACC_CACHED)) {
2224+
for (i = 0; i < num_interface_names; i++) {
2225+
zend_string_release_ex(ce->interface_names[i].name, 0);
2226+
zend_string_release_ex(ce->interface_names[i].lc_name, 0);
2227+
}
2228+
efree(ce->interface_names);
2229+
}
2230+
22232231
ce->num_interfaces = num_interfaces;
22242232
ce->interfaces = interfaces;
22252233
ce->ce_flags |= ZEND_ACC_RESOLVED_INTERFACES;
@@ -3575,14 +3583,7 @@ ZEND_API zend_class_entry *zend_do_link_class(zend_class_entry *ce, zend_string
35753583
Z_CE_P(zv) = ce;
35763584
}
35773585

3578-
if (!(ce->ce_flags & ZEND_ACC_CACHED)) {
3579-
for (i = 0; i < ce->num_interfaces; i++) {
3580-
zend_string_release_ex(ce->interface_names[i].name, 0);
3581-
zend_string_release_ex(ce->interface_names[i].lc_name, 0);
3582-
}
3583-
efree(ce->interface_names);
3584-
}
3585-
3586+
size_t num_interface_names = ce->num_interfaces;
35863587
ce->num_interfaces = num_implementable_interfaces;
35873588

35883589
if (CG(unlinked_uses)) {
@@ -3624,7 +3625,7 @@ ZEND_API zend_class_entry *zend_do_link_class(zend_class_entry *ce, zend_string
36243625
memcpy(interfaces + num_parent_interfaces, traits_and_interfaces + ce->num_traits,
36253626
sizeof(zend_class_entry *) * ce->num_interfaces);
36263627

3627-
zend_do_implement_interfaces(ce, interfaces);
3628+
zend_do_implement_interfaces(ce, interfaces, num_interface_names);
36283629
} else if (parent && parent->num_interfaces) {
36293630
zend_do_inherit_interfaces(ce, parent);
36303631
}

0 commit comments

Comments
 (0)