From c99c6d4cf66dca1e9a13d6068da8a993f6540486 Mon Sep 17 00:00:00 2001 From: David Robillard Date: Tue, 9 Aug 2022 21:54:29 -0400 Subject: Simplify ring writing code The compiler is surely smart enough to factor out these common expressions, but I find this easier to read this way anyway. --- src/ring.c | 14 ++++++++------ 1 file changed, 8 insertions(+), 6 deletions(-) (limited to 'src/ring.c') diff --git a/src/ring.c b/src/ring.c index f15b582..c08798b 100644 --- a/src/ring.c +++ b/src/ring.c @@ -194,16 +194,18 @@ zix_ring_write(ZixRing* ring, const void* src, uint32_t size) return 0; } - if (w + size <= ring->size) { + const uint32_t end = w + size; + if (end <= ring->size) { memcpy(&ring->buf[w], src, size); ZIX_WRITE_BARRIER(); - ring->write_head = (w + size) & ring->size_mask; + ring->write_head = end & ring->size_mask; } else { - const uint32_t this_size = ring->size - w; - memcpy(&ring->buf[w], src, this_size); - memcpy(&ring->buf[0], (const char*)src + this_size, size - this_size); + const uint32_t size1 = ring->size - w; + const uint32_t size2 = size - size1; + memcpy(&ring->buf[w], src, size1); + memcpy(&ring->buf[0], (const char*)src + size1, size2); ZIX_WRITE_BARRIER(); - ring->write_head = size - this_size; + ring->write_head = size2; } return size; -- cgit v1.2.1