@@ -2238,6 +2238,7 @@ static void zend_do_implement_interfaces(zend_class_entry *ce, zend_class_entry
22382238 zend_string_release_ex (ce -> interface_names [i ].lc_name , 0 );
22392239 }
22402240 efree (ce -> interface_names );
2241+ ce -> interface_names = NULL ;
22412242 }
22422243
22432244 ce -> num_interfaces = num_interfaces ;
@@ -3640,8 +3641,18 @@ ZEND_API zend_class_entry *zend_do_link_class(zend_class_entry *ce, zend_string
36403641 sizeof (zend_class_entry * ) * ce -> num_interfaces );
36413642
36423643 zend_do_implement_interfaces (ce , interfaces , num_interface_names );
3643- } else if (parent && parent -> num_interfaces ) {
3644- zend_do_inherit_interfaces (ce , parent );
3644+ } else {
3645+ if (ce -> interface_names ) {
3646+ for (i = 0 ; i < num_interface_names ; i ++ ) {
3647+ zend_string_release_ex (ce -> interface_names [i ].name , 0 );
3648+ zend_string_release_ex (ce -> interface_names [i ].lc_name , 0 );
3649+ }
3650+ efree (ce -> interface_names );
3651+ ce -> interface_names = NULL ;
3652+ }
3653+ if (parent && parent -> num_interfaces ) {
3654+ zend_do_inherit_interfaces (ce , parent );
3655+ }
36453656 }
36463657 if (!(ce -> ce_flags & (ZEND_ACC_INTERFACE |ZEND_ACC_TRAIT ))
36473658 && (ce -> ce_flags & (ZEND_ACC_IMPLICIT_ABSTRACT_CLASS |ZEND_ACC_EXPLICIT_ABSTRACT_CLASS ))
0 commit comments