commit 79679be50ddfab04d34cb3dc412d4e5088de2126 (tree)
parent 9dc9219b2feb5971ca5e86e0d0880233f28cf18c
Author: Luuk de Gram <luuk@degram.dev>
Date: Thu, 17 Mar 2022 21:20:00 +0100
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.
Diffstat:
1 file changed, 1 insertion(+), 0 deletions(-)
diff --git 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;