chiark / gitweb /
childio: Fix spurious error from leak drop when SIGTERMed
authorIan Jackson <ijackson@chiark.greenend.org.uk>
Mon, 31 May 2021 13:43:42 +0000 (14:43 +0100)
committerIan Jackson <ijackson@chiark.greenend.org.uk>
Mon, 31 May 2021 13:55:13 +0000 (14:55 +0100)
Signed-off-by: Ian Jackson <ijackson@chiark.greenend.org.uk>
src/childio.rs

index 5bc3fbe3b3321fafdc98d98a1e2faf1b972fa886..d6a6111e7113766dd8fe57257e8a85ae5aa7b322 100644 (file)
@@ -80,7 +80,11 @@ impl Drop for ChildWrapper {
             .map_err(|_| anyhow!("pid {:?} out of range!", pid))?;
           let pid = Pid::from_raw(pid);
           signal::kill(pid, SIGTERM).context("kill")?;
-          self.child.wait().context("wait after kill")?
+          let mut es = self.child.wait().context("wait after kill")?;
+          if es.signal() == Some(SIGTERM as _) {
+            es = process::ExitStatus::from_raw(0);
+          }
+          es
         },
       };
       if ! self.reported && ! es.success()