diff --git a/mm/circbuf/circbuf.c b/mm/circbuf/circbuf.c index b85a029f59..f9fac1fdcf 100644 --- a/mm/circbuf/circbuf.c +++ b/mm/circbuf/circbuf.c @@ -301,11 +301,16 @@ ssize_t circbuf_peekat(FAR struct circbuf_s *circ, size_t pos, DEBUGASSERT(circ); - if (!circ->size || pos >= circ->head) + if (!circ->size) { return 0; } + if (circ->head - pos > circ->head - circ->tail) + { + pos = circ->tail; + } + len = circ->head - pos; off = pos % circ->size;