Fixed critical ring buffer underflow bug

This commit is contained in:
2026-06-03 19:11:50 +02:00
parent f8b73ea1bc
commit 6f0009cfbb
2 changed files with 4 additions and 2 deletions

View File

@@ -5,6 +5,7 @@
#include <assert.h>
#include <ring_buffer.h>
#include <stdbool.h>
#include <stdint.h>
void ringBufferPush(volatile ring_buffer_t *rb, uint32_t value) {
rb->buffer[rb->w_head] = value;
@@ -13,7 +14,8 @@ void ringBufferPush(volatile ring_buffer_t *rb, uint32_t value) {
}
uint32_t ringBufferRead(volatile ring_buffer_t *rb, uint8_t neg_idx) {
return rb->buffer[rb->w_head - 1 - neg_idx];
uint8_t idx = (uint8_t)(rb->w_head - 1u - neg_idx);
return rb->buffer[idx];
}
void ringBufferRevert(volatile ring_buffer_t *rb, uint8_t val) {