diff --git a/vlib/v/gen/c/cgen.v b/vlib/v/gen/c/cgen.v index deaeaca78e..f3b8e20d75 100644 --- a/vlib/v/gen/c/cgen.v +++ b/vlib/v/gen/c/cgen.v @@ -2638,12 +2638,13 @@ fn (mut g Gen) autofree_variable(v ast.Var) { g.autofree_var_call('string_free', v) return } - if sym.has_method('free') { - g.autofree_var_call(free_fn, v) - } else if g.pref.experimental && v.typ.is_ptr() && sym.name.after('.')[0].is_capital() { + if g.pref.experimental && v.typ.is_ptr() && sym.name.after('.')[0].is_capital() { // Free user reference types g.autofree_var_call('free', v) } + if sym.has_method('free') { + g.autofree_var_call(free_fn, v) + } } fn (mut g Gen) autofree_var_call(free_fn_name string, v ast.Var) {