File tree Expand file tree Collapse file tree 1 file changed +7
-8
lines changed Expand file tree Collapse file tree 1 file changed +7
-8
lines changed Original file line number Diff line number Diff line change @@ -475,17 +475,16 @@ impl Condvar {
475
475
mut dur : Duration , mut condition : F )
476
476
-> LockResult < ( MutexGuard < ' a , T > , WaitTimeoutResult ) >
477
477
where F : FnMut ( & mut T ) -> bool {
478
- let timed_out = Duration :: new ( 0 , 0 ) ;
478
+ let start = Instant :: now ( ) ;
479
479
loop {
480
- if ! condition ( & mut * guard) {
480
+ if condition ( & mut * guard) {
481
481
return Ok ( ( guard, WaitTimeoutResult ( false ) ) ) ;
482
- } else if dur == timed_out {
483
- return Ok ( ( guard, WaitTimeoutResult ( true ) ) ) ;
484
482
}
485
- let wait_timer = Instant :: now ( ) ;
486
- let wait_result = self . wait_timeout ( guard, dur) ?;
487
- dur = dur. checked_sub ( wait_timer. elapsed ( ) ) . unwrap_or ( timed_out) ;
488
- guard = wait_result. 0 ;
483
+ let timeout = match dur. checked_sub ( start. elapsed ( ) ) {
484
+ Some ( timeout) => timeout,
485
+ None => return Ok ( ( guard, WaitTimeoutResult ( true ) ) ) ,
486
+ }
487
+ guard = self . wait_timeout ( guard, dur) ?. 0 ;
489
488
}
490
489
}
491
490
You can’t perform that action at this time.
0 commit comments