diff --git a/src/mapping.c b/src/mapping.c index cb4db69880a68ed6e3c3c6b36d73b56cdb691379..0da050c3d42ff2c4b83e3fc5d9f05f8d2e3b2324 100644 --- a/src/mapping.c +++ b/src/mapping.c @@ -398,7 +398,7 @@ void check_mapping_for_destruct(struct mapping *m) if(d_flag > 1) check_mapping_type_fields(m); #endif - if((m->ind_types | m->val_types) & BIT_OBJECT) + if((m->ind_types | m->val_types) & (BIT_OBJECT | BIT_FUNCTION)) { val_types = ind_types = 0; m->val_types |= BIT_INT; @@ -408,7 +408,8 @@ void check_mapping_for_destruct(struct mapping *m) { check_destructed(& k->val); - if(k->ind.type == T_OBJECT && !k->ind.u.object->prog) + if((k->ind.type == T_OBJECT || k->ind.type == T_FUNCTION) && + !k->ind.u.object->prog) { *prev=k->next; free_svalue(& k->ind);