diff util-src/ringbuffer.c @ 14177:67b68147ed1d 13.0

util.ringbuffer: find(): Fix find logic bugs If the buffer was full, find() would return earlier (wpos == rpos). Checking blen is the better way to test if the buffer is empty. Secondly, the loop scanned for blen - l, but if l (length of needle) was larger than the buffer length, this calculation would underflow and cause a lot of spinning. New tests have been added to cover various edge cases of :find().
author Matthew Wild <mwild1@gmail.com>
date Mon, 25 May 2026 14:44:20 +0100
parents 2bcabbeac9b0
children
line wrap: on
line diff
--- a/util-src/ringbuffer.c	Mon May 25 14:41:06 2026 +0100
+++ b/util-src/ringbuffer.c	Mon May 25 14:44:20 2026 +0100
@@ -82,7 +82,7 @@
 	size_t i, j;
 	int m;
 
-	if(b->rpos == b->wpos) { /* empty */
+	if(l > b->blen || l == 0) { /* needle is too large or too small */
 		return 0;
 	}