aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMaximilian Rozwora <[email protected]>2025-02-24 15:11:14 +0100
committerMaximilian Rozwora <[email protected]>2025-02-24 15:11:14 +0100
commit519bd8646769899040b33a42ab57ddbd869d31ae (patch)
tree0919535c34a80f258c5243cc25d13fcac95a831d
parentc52f56785fbc4ad7feb7a0f61bd40f0d3563a845 (diff)
fix: Check buffer full before pop_done()
-rw-r--r--embassy-stm32/src/usart/buffered.rs7
1 files changed, 4 insertions, 3 deletions
diff --git a/embassy-stm32/src/usart/buffered.rs b/embassy-stm32/src/usart/buffered.rs
index 1cb9616d9..e61558b58 100644
--- a/embassy-stm32/src/usart/buffered.rs
+++ b/embassy-stm32/src/usart/buffered.rs
@@ -911,12 +911,13 @@ impl<'d> embedded_hal_02::serial::Read<u8> for BufferedUartRx<'d> {
911 let state = self.state; 911 let state = self.state;
912 let mut rx_reader = unsafe { state.rx_buf.reader() }; 912 let mut rx_reader = unsafe { state.rx_buf.reader() };
913 913
914 let do_pend = state.rx_buf.is_full();
914 if let Some(data) = rx_reader.pop_one() { 915 if let Some(data) = rx_reader.pop_one() {
915 Ok(data) 916 if do_pend {
916 } else {
917 if state.rx_buf.is_full() {
918 self.info.interrupt.pend(); 917 self.info.interrupt.pend();
919 } 918 }
919 Ok(data)
920 } else {
920 Err(nb::Error::WouldBlock) 921 Err(nb::Error::WouldBlock)
921 } 922 }
922 } 923 }