diff options
| author | Maximilian Rozwora <[email protected]> | 2025-02-24 15:11:14 +0100 |
|---|---|---|
| committer | Maximilian Rozwora <[email protected]> | 2025-02-24 15:11:14 +0100 |
| commit | 519bd8646769899040b33a42ab57ddbd869d31ae (patch) | |
| tree | 0919535c34a80f258c5243cc25d13fcac95a831d | |
| parent | c52f56785fbc4ad7feb7a0f61bd40f0d3563a845 (diff) | |
fix: Check buffer full before pop_done()
| -rw-r--r-- | embassy-stm32/src/usart/buffered.rs | 7 |
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 | } |
