fix: Check buffer full before pop_done()

This commit is contained in:
Maximilian Rozwora 2025-02-24 15:11:14 +01:00
parent c52f56785f
commit 519bd86467

View File

@ -911,12 +911,13 @@ impl<'d> embedded_hal_02::serial::Read<u8> for BufferedUartRx<'d> {
let state = self.state; let state = self.state;
let mut rx_reader = unsafe { state.rx_buf.reader() }; let mut rx_reader = unsafe { state.rx_buf.reader() };
let do_pend = state.rx_buf.is_full();
if let Some(data) = rx_reader.pop_one() { if let Some(data) = rx_reader.pop_one() {
Ok(data) if do_pend {
} else {
if state.rx_buf.is_full() {
self.info.interrupt.pend(); self.info.interrupt.pend();
} }
Ok(data)
} else {
Err(nb::Error::WouldBlock) Err(nb::Error::WouldBlock)
} }
} }