diff options
author | Olivier Gayot <duskcoder@gmail.com> | 2013-12-21 23:48:52 +0100 |
---|---|---|
committer | Olivier Gayot <duskcoder@gmail.com> | 2014-01-18 13:44:04 +0100 |
commit | 24dc23e78ca4b49d599093f7936ddcb9da818ab6 (patch) | |
tree | 2f60c337a403fb0225c794ec6bc3782febfeb155 /src/rb.c | |
parent | 3522c68dcd38e3eef393771d65aff6de2f815da3 (diff) |
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
Diffstat (limited to 'src/rb.c')
-rw-r--r-- | src/rb.c | 8 |
1 files changed, 6 insertions, 2 deletions
@@ -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; } |