aboutsummaryrefslogtreecommitdiff
path: root/embassy-usb/src/class/cdc_acm.rs
diff options
context:
space:
mode:
Diffstat (limited to 'embassy-usb/src/class/cdc_acm.rs')
-rw-r--r--embassy-usb/src/class/cdc_acm.rs7
1 files changed, 5 insertions, 2 deletions
diff --git a/embassy-usb/src/class/cdc_acm.rs b/embassy-usb/src/class/cdc_acm.rs
index 388e21fbd..c990b679e 100644
--- a/embassy-usb/src/class/cdc_acm.rs
+++ b/embassy-usb/src/class/cdc_acm.rs
@@ -545,9 +545,12 @@ impl<'d, D: Driver<'d>> embedded_io_async::Read for BufferedReceiver<'d, D> {
545 return self.receiver.read_packet(buf).await; 545 return self.receiver.read_packet(buf).await;
546 } 546 }
547 547
548 // Otherwise read a packet into the internal buffer, and return some of it to the caller 548 // Otherwise read a packet into the internal buffer, and return some of it to the caller.
549 self.start = 0; 549 //
550 // It's important that `start` and `end` be updated in this order so they're left in a
551 // consistent state if the `read` future is dropped mid-execution, e.g. from a timeout.
550 self.end = self.receiver.read_packet(&mut self.buffer).await?; 552 self.end = self.receiver.read_packet(&mut self.buffer).await?;
553 self.start = 0;
551 return Ok(self.read_from_buffer(buf)); 554 return Ok(self.read_from_buffer(buf));
552 } 555 }
553} 556}