| ... | ... | @@ -7096,6 +7096,7 @@ fn funcCommon( |
| 7096 | 7096 | if (param.ty.tag() == .generic_poison) is_generic = true; |
| 7097 | 7097 | } |
| 7098 | 7098 | |
| 7099 | var destroy_fn_on_error = false; |
| 7099 | 7100 | const new_func: *Module.Fn = new_func: { |
| 7100 | 7101 | if (!has_body) break :new_func undefined; |
| 7101 | 7102 | if (sema.comptime_args_fn_inst == func_inst) { |
| ... | ... | @@ -7103,9 +7104,10 @@ fn funcCommon( |
| 7103 | 7104 | sema.preallocated_new_func = null; // take ownership |
| 7104 | 7105 | break :new_func new_func; |
| 7105 | 7106 | } |
| 7107 | destroy_fn_on_error = true; |
| 7106 | 7108 | break :new_func try sema.gpa.create(Module.Fn); |
| 7107 | 7109 | }; |
| 7108 | | errdefer if (has_body) sema.gpa.destroy(new_func); |
| 7110 | errdefer if (destroy_fn_on_error) sema.gpa.destroy(new_func); |
| 7109 | 7111 | |
| 7110 | 7112 | var maybe_inferred_error_set_node: ?*Module.Fn.InferredErrorSetListNode = null; |
| 7111 | 7113 | errdefer if (maybe_inferred_error_set_node) |node| sema.gpa.destroy(node); |