From acd69b46f07dab82d8a67645460d4721af5ebd1f Mon Sep 17 00:00:00 2001 From: Mika Cohen Date: Mon, 20 Jul 2026 10:13:28 -0600 Subject: [PATCH 1/2] Circular buffer: Remove indexed items --- src/lib/circular_buffer.c | 4 ++-- src/lib/circular_buffer.h | 7 +++---- 2 files changed, 5 insertions(+), 6 deletions(-) diff --git a/src/lib/circular_buffer.c b/src/lib/circular_buffer.c index 5bd837e1..5fdd91a3 100644 --- a/src/lib/circular_buffer.c +++ b/src/lib/circular_buffer.c @@ -74,8 +74,8 @@ bool circular_buffer_get(const CircularBuffer *cb, size_t i, void *item) { return true; } -bool circular_buffer_pop(CircularBuffer *cb, size_t i, void *item) { - if (!circular_buffer_get(cb, i, item)) { +bool circular_buffer_pop(CircularBuffer *cb, void *item) { + if (!circular_buffer_get(cb, 0, item)) { return false; } diff --git a/src/lib/circular_buffer.h b/src/lib/circular_buffer.h index df5c5529..af3a710c 100644 --- a/src/lib/circular_buffer.h +++ b/src/lib/circular_buffer.h @@ -53,11 +53,10 @@ void circular_buffer_push(CircularBuffer *cb, const void *item); bool circular_buffer_get(const CircularBuffer *cb, size_t i, void *item); /** - * Pops an item at index i (a position relative to the current tail) from the - * buffer. If there's no item at that index, leaves item unchanged and returns - * false, otherwise returns true. + * Pops the item at the tail of the buffer. If the buffer is empty, leaves item + * unchanged and returns false, otherwise returns true. */ -bool circular_buffer_pop(CircularBuffer *cb, size_t i, void *item); +bool circular_buffer_pop(CircularBuffer *cb, void *item); /** * Iterates over the buffer, calling the callback function on each item. From ab1fb350f721aec327dfd9092355f1e74c3bfb1a Mon Sep 17 00:00:00 2001 From: Mika Cohen Date: Mon, 20 Jul 2026 10:13:32 -0600 Subject: [PATCH 2/2] Circular buffer: Iterate by item --- src/lib/circular_buffer.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/lib/circular_buffer.c b/src/lib/circular_buffer.c index 5fdd91a3..ce9d0a64 100644 --- a/src/lib/circular_buffer.c +++ b/src/lib/circular_buffer.c @@ -96,7 +96,7 @@ void circular_buffer_iterate( size_t i = cb->tail; do { - callback(&cb->buffer[i], data); + callback(cb->buffer + i * cb->item_size, data); increment(cb, &i); } while (i != cb->head); }