From 24dc23e78ca4b49d599093f7936ddcb9da818ab6 Mon Sep 17 00:00:00 2001 From: Olivier Gayot Date: Sat, 21 Dec 2013 23:48:52 +0100 Subject: rb: allow to remove data from a ring buffer we provide two new ways to remove data from a ring_buffer rb_remove(rb, n) or rb_get(rb, NULL, n) closes #2 --- src/rb.c | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) (limited to 'src/rb.c') diff --git a/src/rb.c b/src/rb.c index 505c373..ce269fb 100644 --- a/src/rb.c +++ b/src/rb.c @@ -96,7 +96,9 @@ size_t rb_peek(const t_rb *rb, void *dest, size_t n) /* do not try to retrieve too much data */ size = MIN(n, rb_get_size(rb) - rb->off_r); - memcpy(dest, &rb->buffer[rb->off_r], size); + if (dest != NULL) { + memcpy(dest, &rb->buffer[rb->off_r], size); + } dest += size; n -= size; @@ -106,7 +108,9 @@ size_t rb_peek(const t_rb *rb, void *dest, size_t n) size2 = MIN(n, (size_t)(rb->off_w - offset)); - memcpy(dest, &rb->buffer[offset], size2); + if (dest != NULL) { + memcpy(dest, &rb->buffer[offset], size2); + } return size + size2; } -- cgit v1.2.3