about summary refs log tree commit diff
diff options
context:
space:
mode:
authorHans Kratz <hans@appfour.com>2021-08-04 14:25:45 +0000
committerHans Kratz <hans@appfour.com>2021-08-04 14:25:45 +0000
commit5ff06fb77f906b65b6a5301e84acc82a246af2b0 (patch)
treec31b99fc978805d0d05d01de51015c733d854796
parent49ca3d9796030fc0a85089460e9f825ceecc08ed (diff)
downloadrust-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.rs3
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)