@@ -63,8 +63,7 @@ pub fn futex<'tcx>(
63
63
} ;
64
64
65
65
if bitset == 0 {
66
- this. set_last_error ( LibcError ( "EINVAL" ) ) ?;
67
- this. write_scalar ( Scalar :: from_target_isize ( -1 , this) , dest) ?;
66
+ this. set_last_error_and_return ( LibcError ( "EINVAL" ) , dest) ?;
68
67
return interp_ok ( ( ) ) ;
69
68
}
70
69
@@ -75,9 +74,7 @@ pub fn futex<'tcx>(
75
74
let duration = match this. read_timespec ( & timeout) ? {
76
75
Some ( duration) => duration,
77
76
None => {
78
- this. set_last_error ( LibcError ( "EINVAL" ) ) ?;
79
- this. write_scalar ( Scalar :: from_target_isize ( -1 , this) , dest) ?;
80
- return interp_ok ( ( ) ) ;
77
+ return this. set_last_error_and_return ( LibcError ( "EINVAL" ) , dest) ;
81
78
}
82
79
} ;
83
80
let timeout_clock = if op & futex_realtime == futex_realtime {
@@ -153,12 +150,12 @@ pub fn futex<'tcx>(
153
150
Scalar :: from_target_isize ( 0 , this) , // retval_succ
154
151
Scalar :: from_target_isize ( -1 , this) , // retval_timeout
155
152
dest. clone ( ) ,
156
- this. eval_libc ( "ETIMEDOUT" ) ,
153
+ this. eval_libc ( "ETIMEDOUT" ) , // errno_timeout
157
154
) ;
158
155
} else {
159
156
// The futex value doesn't match the expected value, so we return failure
160
157
// right away without sleeping: -1 and errno set to EAGAIN.
161
- this. set_last_error_and_return ( LibcError ( "EAGAIN" ) , dest) ? ;
158
+ return this. set_last_error_and_return ( LibcError ( "EAGAIN" ) , dest) ;
162
159
}
163
160
}
164
161
// FUTEX_WAKE: (int *addr, int op = FUTEX_WAKE, int val)
@@ -178,9 +175,7 @@ pub fn futex<'tcx>(
178
175
u32:: MAX
179
176
} ;
180
177
if bitset == 0 {
181
- this. set_last_error ( LibcError ( "EINVAL" ) ) ?;
182
- this. write_scalar ( Scalar :: from_target_isize ( -1 , this) , dest) ?;
183
- return interp_ok ( ( ) ) ;
178
+ return this. set_last_error_and_return ( LibcError ( "EINVAL" ) , dest) ;
184
179
}
185
180
// Together with the SeqCst fence in futex_wait, this makes sure that futex_wait
186
181
// will see the latest value on addr which could be changed by our caller
0 commit comments