]> gitweb.hhaalo.de Git - ringbuffer.git/commitdiff
fix: limits
authorBastian Dehn <hhaalo@arcor.de>
Sun, 24 Apr 2022 15:13:57 +0000 (17:13 +0200)
committerBastian Dehn <hhaalo@arcor.de>
Sun, 24 Apr 2022 15:13:57 +0000 (17:13 +0200)
demo.c
ringbuffer.c

diff --git a/demo.c b/demo.c
index 5078cfdfe6bd25da6387d418ebc933159d40c6aa..3d6bec5d1f3b474d31d1f058c736cc32ff1d7f14 100644 (file)
--- a/demo.c
+++ b/demo.c
@@ -1,7 +1,7 @@
 #include <stdio.h>
 #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);
index f9e8e1e86b3a774cc2b23fcd41989a93bb541e25..e95fc4c8e2a09c52320170e016ec3afc17f42e7a 100644 (file)
@@ -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;
 }