Skip to content

Commit

Permalink
Fix pretty big bug
Browse files Browse the repository at this point in the history
  • Loading branch information
Xaeroxe committed Nov 20, 2020
1 parent 8d7ba2a commit b3b3271
Showing 1 changed file with 10 additions and 6 deletions.
16 changes: 10 additions & 6 deletions futures-macro/src/stream_select.rs
Expand Up @@ -54,19 +54,23 @@ pub(crate) fn stream_select(input: TokenStream) -> TokenStream {
let Self(#(ref mut #field_idents),*) = self.get_mut();
let mut future_array = [#(StreamFutures::#generic_idents(#field_idents.next())),*];
__futures_crate::async_await::shuffle(&mut future_array);
let mut any_polled = false;
let mut any_pending = false;
for f in &mut future_array {
if __futures_crate::future::FusedFuture::is_terminated(f) {
continue;
} else {
any_polled = true;
let r = __futures_crate::future::Future::poll(::std::pin::Pin::new(f), cx);
if r.is_ready() {
return r;
match __futures_crate::future::Future::poll(::std::pin::Pin::new(f), cx) {
r @ __futures_crate::task::Poll::Ready(Some(_)) => {
return r;
},
__futures_crate::task::Poll::Pending => {
any_pending = true;
},
__futures_crate::task::Poll::Ready(None) => {},
}
}
}
if any_polled {
if any_pending {
__futures_crate::task::Poll::Pending
} else {
__futures_crate::task::Poll::Ready(None)
Expand Down

0 comments on commit b3b3271

Please sign in to comment.