File tree Expand file tree Collapse file tree 2 files changed +16
-6
lines changed Expand file tree Collapse file tree 2 files changed +16
-6
lines changed Original file line number Diff line number Diff line change @@ -370,7 +370,7 @@ pub fn posix_spawn<SA: AsRef<CStr>, SE: AsRef<CStr>>(
370370) -> Result < Pid > {
371371 let mut pid = 0 ;
372372
373- let res = unsafe {
373+ let ret = unsafe {
374374 let args_p = to_exec_array ( args) ;
375375 let env_p = to_exec_array ( envp) ;
376376
@@ -384,7 +384,10 @@ pub fn posix_spawn<SA: AsRef<CStr>, SE: AsRef<CStr>>(
384384 )
385385 } ;
386386
387- Errno :: result ( res) ?;
387+ if ret != 0 {
388+ return Err ( Errno :: from_raw ( ret) ) ;
389+ }
390+
388391 Ok ( Pid :: from_raw ( pid) )
389392}
390393
@@ -399,7 +402,7 @@ pub fn posix_spawnp<SA: AsRef<CStr>, SE: AsRef<CStr>>(
399402) -> Result < Pid > {
400403 let mut pid = 0 ;
401404
402- let res = unsafe {
405+ let ret = unsafe {
403406 let args_p = to_exec_array ( args) ;
404407 let env_p = to_exec_array ( envp) ;
405408
@@ -413,6 +416,9 @@ pub fn posix_spawnp<SA: AsRef<CStr>, SE: AsRef<CStr>>(
413416 )
414417 } ;
415418
416- Errno :: result ( res) ?;
419+ if ret != 0 {
420+ return Err ( Errno :: from_raw ( ret) ) ;
421+ }
422+
417423 Ok ( Pid :: from_raw ( pid) )
418424}
Original file line number Diff line number Diff line change 1- use std:: ffi:: CString ;
2-
1+ use super :: FORK_MTX ;
32use nix:: spawn:: { self , PosixSpawnAttr , PosixSpawnFileActions } ;
43use nix:: sys:: signal;
54use nix:: sys:: wait:: { waitpid, WaitPidFlag , WaitStatus } ;
5+ use std:: ffi:: CString ;
66
77#[ test]
88fn spawn_true ( ) {
9+ let _guard = FORK_MTX . lock ( ) ;
10+
911 let bin = & CString :: new ( "true" ) . unwrap ( ) ;
1012 let args = & [
1113 CString :: new ( "true" ) . unwrap ( ) ,
@@ -32,6 +34,8 @@ fn spawn_true() {
3234
3335#[ test]
3436fn spawn_sleep ( ) {
37+ let _guard = FORK_MTX . lock ( ) ;
38+
3539 let bin = & CString :: new ( "sleep" ) . unwrap ( ) ;
3640 let args = & [ CString :: new ( "sleep" ) . unwrap ( ) , CString :: new ( "30" ) . unwrap ( ) ] ;
3741 let vars: & [ CString ] = & [ ] ;
You can’t perform that action at this time.
0 commit comments