From 453a99b91ce4d44685fb3eab6a7bbc1044f4bb5a Mon Sep 17 00:00:00 2001 From: Bastian Dehn Date: Sun, 24 Apr 2022 17:13:57 +0200 Subject: [PATCH] fix: limits --- demo.c | 4 ++-- ringbuffer.c | 12 +++++++++--- 2 files changed, 11 insertions(+), 5 deletions(-) diff --git a/demo.c b/demo.c index 5078cfd..3d6bec5 100644 --- a/demo.c +++ b/demo.c @@ -1,7 +1,7 @@ #include #include "ringbuffer.h" -#define maxvalues 52 +#define maxvalues 60 int main() { @@ -14,7 +14,7 @@ int main() } for (int i = 0; i < maxvalues; i++) { - printf("Value: %d\n", getValue(&buffer)); + printf("Head: %d, Tail %d, Count: %d, Value: %d\n", buffer.head, buffer.tail, buffer.count, getValue(&buffer)); } freeRingbuffer(&buffer); diff --git a/ringbuffer.c b/ringbuffer.c index f9e8e1e..e95fc4c 100644 --- a/ringbuffer.c +++ b/ringbuffer.c @@ -19,8 +19,13 @@ void freeRingbuffer(ringbuffer *buf) void addValue(ringbuffer *buf, int value) { - if (buf->count >= buf->max) + if (buf->count >= buf->max) { buf->count = buf->max; + buf->tail++; + } + + if (buf->tail >= buf->max) + buf->tail = 0; if (buf->head >= buf->max) buf->head = 0; @@ -32,15 +37,16 @@ void addValue(ringbuffer *buf, int value) int getValue(ringbuffer *buf) { - if (buf->count < 0) - return -1; if (buf->tail >= buf->max) buf->tail = 0; int value = buf->position[buf->tail]; buf->tail++; + buf->count--; + if (buf->count < 1) + return -1; return value; } -- 2.39.5