diff --git a/mip/mip.c b/mip/mip.c index 16e2356a..150847d0 100644 --- a/mip/mip.c +++ b/mip/mip.c @@ -184,7 +184,7 @@ static void q_copyout(struct queue *q, uint8_t *buf, size_t len, size_t tail) { static bool q_write(struct queue *q, const void *buf, size_t len) { bool success = false; - size_t left = q->len - q->head + q->tail; + size_t left = (q->len - q->head + q->tail -1) % q->len; if (len + sizeof(size_t) <= left) { q_copyin(q, (uint8_t *) &len, sizeof(len), q->head); q_copyin(q, (uint8_t *) buf, len, (q->head + sizeof(size_t)) % q->len); diff --git a/mongoose.c b/mongoose.c index 9a307cfe..85951302 100644 --- a/mongoose.c +++ b/mongoose.c @@ -6472,7 +6472,7 @@ static void q_copyout(struct queue *q, uint8_t *buf, size_t len, size_t tail) { static bool q_write(struct queue *q, const void *buf, size_t len) { bool success = false; - size_t left = q->len - q->head + q->tail; + size_t left = (q->len - q->head + q->tail -1) % q->len; if (len + sizeof(size_t) <= left) { q_copyin(q, (uint8_t *) &len, sizeof(len), q->head); q_copyin(q, (uint8_t *) buf, len, (q->head + sizeof(size_t)) % q->len);