mirror of
https://github.com/ziglang/zig.git
synced 2026-02-12 20:37:54 +00:00
Sema: Revert sema.err to null if the Decl already has an error
Previously we would assign the error message to Sema and then never clear it even when destroying the error message, which caused memory corruption. Closes #12437
This commit is contained in:
parent
40eac90280
commit
a9c4dc84f4
@ -1906,8 +1906,6 @@ fn failWithOwnedErrorMsg(sema: *Sema, err_msg: *Module.ErrorMsg) CompileError {
|
||||
}
|
||||
|
||||
const mod = sema.mod;
|
||||
sema.err = err_msg;
|
||||
|
||||
{
|
||||
errdefer err_msg.destroy(mod.gpa);
|
||||
if (err_msg.src_loc.lazy == .unneeded) {
|
||||
@ -1925,8 +1923,10 @@ fn failWithOwnedErrorMsg(sema: *Sema, err_msg: *Module.ErrorMsg) CompileError {
|
||||
const gop = mod.failed_decls.getOrPutAssumeCapacity(sema.owner_decl_index);
|
||||
if (gop.found_existing) {
|
||||
// If there are multiple errors for the same Decl, prefer the first one added.
|
||||
sema.err = null;
|
||||
err_msg.destroy(mod.gpa);
|
||||
} else {
|
||||
sema.err = err_msg;
|
||||
gop.value_ptr.* = err_msg;
|
||||
}
|
||||
return error.AnalysisFail;
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user