From fd9498e07c949828a6aedfc17340641b6ec56c0c Mon Sep 17 00:00:00 2001 From: Romain Vimont Date: Thu, 30 May 2024 15:49:07 +0200 Subject: [PATCH] Avoid zero-length copies Return early if there is nothing to read/write. --- app/src/util/audiobuf.c | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/app/src/util/audiobuf.c b/app/src/util/audiobuf.c index 3597f7ee..3cc5cad1 100644 --- a/app/src/util/audiobuf.c +++ b/app/src/util/audiobuf.c @@ -46,6 +46,9 @@ sc_audiobuf_read(struct sc_audiobuf *buf, void *to_, uint32_t samples_count) { uint32_t head = atomic_load_explicit(&buf->head, memory_order_acquire); uint32_t can_read = (buf->alloc_size + head - tail) % buf->alloc_size; + if (!can_read) { + return 0; + } if (samples_count > can_read) { samples_count = can_read; } @@ -86,6 +89,9 @@ sc_audiobuf_write(struct sc_audiobuf *buf, const void *from_, uint32_t tail = atomic_load_explicit(&buf->tail, memory_order_acquire); uint32_t can_write = (buf->alloc_size + tail - head - 1) % buf->alloc_size; + if (!can_write) { + return 0; + } if (samples_count > can_write) { samples_count = can_write; }