From 79679be50ddfab04d34cb3dc412d4e5088de2126 Mon Sep 17 00:00:00 2001 From: Luuk de Gram Date: Thu, 17 Mar 2022 21:20:00 +0100 Subject: [PATCH] sema: Fix memory leak When a generic call evaluates to a generic type, the call will be re-generated. However, the old function was not freed before being re-generated, causing a memory leak. So rather than only returning an error, we first free the old value. --- src/Sema.zig | 1 + 1 file changed, 1 insertion(+) diff --git a/src/Sema.zig b/src/Sema.zig index 8fda67b652..fd067d6460 100644 --- a/src/Sema.zig +++ b/src/Sema.zig @@ -5068,6 +5068,7 @@ fn instantiateGenericCall( }; const new_func_val = child_sema.resolveConstValue(&child_block, .unneeded, new_func_inst) catch unreachable; const new_func = new_func_val.castTag(.function).?.data; + errdefer new_func.deinit(gpa); assert(new_func == new_module_func); arg_i = 0;