sema: fix UAF in type mismatch error

This commit is contained in:
xdBronch 2025-11-16 22:01:36 -05:00 committed by Veikka Tuominen
parent 29a1d0c06f
commit d2b1aa48ab

View file

@ -2643,11 +2643,13 @@ pub fn fail(
} }
fn failWithTypeMismatch(sema: *Sema, block: *Block, src: LazySrcLoc, expected: Type, found: Type) CompileError { fn failWithTypeMismatch(sema: *Sema, block: *Block, src: LazySrcLoc, expected: Type, found: Type) CompileError {
const err_msg = try sema.typeMismatchErrMsg(src, expected, found); return sema.failWithOwnedErrorMsg(block, msg: {
errdefer err_msg.destroy(sema.gpa); const msg = try sema.typeMismatchErrMsg(src, expected, found);
try addDeclaredHereNote(sema, err_msg, expected); errdefer msg.destroy(sema.gpa);
try addDeclaredHereNote(sema, err_msg, found); try addDeclaredHereNote(sema, msg, expected);
return sema.failWithOwnedErrorMsg(block, err_msg); try addDeclaredHereNote(sema, msg, found);
break :msg msg;
});
} }
pub fn failWithOwnedErrorMsg(sema: *Sema, block: ?*Block, err_msg: *Zcu.ErrorMsg) error{ AnalysisFail, OutOfMemory } { pub fn failWithOwnedErrorMsg(sema: *Sema, block: ?*Block, err_msg: *Zcu.ErrorMsg) error{ AnalysisFail, OutOfMemory } {