Commit d2b1aa48ab

xdBronch <51252236+xdBronch@users.noreply.github.com>
2025-11-17 04:01:36
sema: fix UAF in type mismatch error
1 parent 29a1d0c
Changed files (1)
src/Sema.zig
@@ -2643,11 +2643,13 @@ pub fn fail(
 }
 
 fn failWithTypeMismatch(sema: *Sema, block: *Block, src: LazySrcLoc, expected: Type, found: Type) CompileError {
-    const err_msg = try sema.typeMismatchErrMsg(src, expected, found);
-    errdefer err_msg.destroy(sema.gpa);
-    try addDeclaredHereNote(sema, err_msg, expected);
-    try addDeclaredHereNote(sema, err_msg, found);
-    return sema.failWithOwnedErrorMsg(block, err_msg);
+    return sema.failWithOwnedErrorMsg(block, msg: {
+        const msg = try sema.typeMismatchErrMsg(src, expected, found);
+        errdefer msg.destroy(sema.gpa);
+        try addDeclaredHereNote(sema, msg, expected);
+        try addDeclaredHereNote(sema, msg, found);
+        break :msg msg;
+    });
 }
 
 pub fn failWithOwnedErrorMsg(sema: *Sema, block: ?*Block, err_msg: *Zcu.ErrorMsg) error{ AnalysisFail, OutOfMemory } {