diff --git a/mip/mip.c b/mip/mip.c index 9b054c4b..33fd5408 100644 --- a/mip/mip.c +++ b/mip/mip.c @@ -180,7 +180,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 65545fab..a9f15b6c 100644 --- a/mongoose.c +++ b/mongoose.c @@ -6469,7 +6469,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);