Rollup merge of #87185 - waterlens:issue-86499-fix, r=Mark-Simulacrum
Fix panics on Windows when the build was cancelled Fixes #86499 cc `@jyn514`
This commit is contained in:
commit
ba869da889
@ -103,12 +103,20 @@ pub unsafe fn setup(build: &mut Build) {
|
||||
};
|
||||
|
||||
let parent = OpenProcess(PROCESS_DUP_HANDLE, FALSE, pid.parse().unwrap());
|
||||
assert!(
|
||||
!parent.is_null(),
|
||||
"PID `{}` doesn't seem to exist: {}",
|
||||
pid,
|
||||
io::Error::last_os_error()
|
||||
);
|
||||
|
||||
// If we get a null parent pointer here, it is possible that either
|
||||
// we have got an invalid pid or the parent process has been closed.
|
||||
// Since the first case rarely happens
|
||||
// (only when wrongly setting the environmental variable),
|
||||
// so it might be better to improve the experience of the second case
|
||||
// when users have interrupted the parent process and we don't finish
|
||||
// duplicating the handle yet.
|
||||
// We just need close the job object if that occurs.
|
||||
if parent.is_null() {
|
||||
CloseHandle(job);
|
||||
return;
|
||||
}
|
||||
|
||||
let mut parent_handle = ptr::null_mut();
|
||||
let r = DuplicateHandle(
|
||||
GetCurrentProcess(),
|
||||
|
Loading…
x
Reference in New Issue
Block a user