diff options
| author | Hans Kratz <hans@appfour.com> | 2021-08-04 14:25:45 +0000 |
|---|---|---|
| committer | Hans Kratz <hans@appfour.com> | 2021-08-04 14:25:45 +0000 |
| commit | 5ff06fb77f906b65b6a5301e84acc82a246af2b0 (patch) | |
| tree | c31b99fc978805d0d05d01de51015c733d854796 | |
| parent | 49ca3d9796030fc0a85089460e9f825ceecc08ed (diff) | |
| download | rust-5ff06fb77f906b65b6a5301e84acc82a246af2b0.tar.gz rust-5ff06fb77f906b65b6a5301e84acc82a246af2b0.zip | |
Fix overflow in rustc happening if the `err_count()` is reduced in a stage.
This can happen if stashed diagnostics are removed or replaced with fewer errors. The semantics stay the same if built without overflow. Fixes #84219.
| -rw-r--r-- | compiler/rustc_session/src/session.rs | 3 |
1 files changed, 1 insertions, 2 deletions
diff --git a/compiler/rustc_session/src/session.rs b/compiler/rustc_session/src/session.rs index 9ab6dbb1ea9..ea2067aaa83 100644 --- a/compiler/rustc_session/src/session.rs +++ b/compiler/rustc_session/src/session.rs @@ -450,8 +450,7 @@ impl Session { { let old_count = self.err_count(); let result = f(); - let errors = self.err_count() - old_count; - if errors == 0 { Ok(result) } else { Err(ErrorReported) } + if self.err_count() == old_count { Ok(result) } else { Err(ErrorReported) } } pub fn span_warn<S: Into<MultiSpan>>(&self, sp: S, msg: &str) { self.diagnostic().span_warn(sp, msg) |
