From 4d3672994d78470518d14c6d7c596aa0b37aaa32 Mon Sep 17 00:00:00 2001 From: Dirk Zimoch Date: Mon, 2 Mar 2020 09:11:50 +0100 Subject: [PATCH] bugfix: when passing negative start index to find(), don't start earlier than index 0 --- src/StreamBuffer.h | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) diff --git a/src/StreamBuffer.h b/src/StreamBuffer.h index 8931c2a..54e73a2 100644 --- a/src/StreamBuffer.h +++ b/src/StreamBuffer.h @@ -199,11 +199,10 @@ public: // find: get index of data in buffer or -1 ssize_t find(char c, ssize_t start=0) const - {char* p; + {if (start < 0 && (start -= len) < 0) start = 0; + char* p; return (p = static_cast( - memchr(buffer+offs+(start<0?start+len:start), - c, start<0?-start:len-start)))? - p-(buffer+offs) : -1;} + memchr(buffer+offs+start, c, len-start)))? p-(buffer+offs) : -1;} ssize_t find(const void* s, size_t size, ssize_t start=0) const;