Skip to content

Commit d2b1aa4

Browse files
xdBronchVexu
authored andcommitted
sema: fix UAF in type mismatch error
1 parent 29a1d0c commit d2b1aa4

File tree

1 file changed

+7
-5
lines changed

1 file changed

+7
-5
lines changed

src/Sema.zig

Lines changed: 7 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -2643,11 +2643,13 @@ pub fn fail(
26432643
}
26442644

26452645
fn failWithTypeMismatch(sema: *Sema, block: *Block, src: LazySrcLoc, expected: Type, found: Type) CompileError {
2646-
const err_msg = try sema.typeMismatchErrMsg(src, expected, found);
2647-
errdefer err_msg.destroy(sema.gpa);
2648-
try addDeclaredHereNote(sema, err_msg, expected);
2649-
try addDeclaredHereNote(sema, err_msg, found);
2650-
return sema.failWithOwnedErrorMsg(block, err_msg);
2646+
return sema.failWithOwnedErrorMsg(block, msg: {
2647+
const msg = try sema.typeMismatchErrMsg(src, expected, found);
2648+
errdefer msg.destroy(sema.gpa);
2649+
try addDeclaredHereNote(sema, msg, expected);
2650+
try addDeclaredHereNote(sema, msg, found);
2651+
break :msg msg;
2652+
});
26512653
}
26522654

26532655
pub fn failWithOwnedErrorMsg(sema: *Sema, block: ?*Block, err_msg: *Zcu.ErrorMsg) error{ AnalysisFail, OutOfMemory } {

0 commit comments

Comments
 (0)