X-Git-Url: https://git.ozlabs.org/?a=blobdiff_plain;f=ccan%2Frbuf%2Frbuf.c;h=cc10cf3d7f25e25531d58a9c4b07c8500ff93bf7;hb=d87a25dc5510f47ed876985f6014dbfa4a96f1aa;hp=d8d658d37a3923454324dfe06a3d4bac777b91d0;hpb=d8a270fdfc57ffe7603028ecda99eeab3889ca70;p=ccan diff --git a/ccan/rbuf/rbuf.c b/ccan/rbuf/rbuf.c index d8d658d3..cc10cf3d 100644 --- a/ccan/rbuf/rbuf.c +++ b/ccan/rbuf/rbuf.c @@ -74,9 +74,11 @@ char *rbuf_read_str(struct rbuf *rbuf, char term) ssize_t r = 0; size_t prev = 0; - while (!(p = memchr(membuf_elems(&rbuf->m) + prev, - term, - membuf_num_elems(&rbuf->m) - prev))) { + /* memchr(NULL, ..., 0) is illegal. FML. */ + while (membuf_num_elems(&rbuf->m) == prev + || !(p = memchr(membuf_elems(&rbuf->m) + prev, + term, + membuf_num_elems(&rbuf->m) - prev))) { prev += r; r = get_more(rbuf); if (r < 0)