diff options
-rw-r--r-- | common/queue.c | 8 |
1 files changed, 6 insertions, 2 deletions
diff --git a/common/queue.c b/common/queue.c index 8018e4c0b0..46ea749979 100644 --- a/common/queue.c +++ b/common/queue.c @@ -19,8 +19,12 @@ int queue_is_empty(const struct queue *q) int queue_has_space(const struct queue *q, int unit_count) { - return (q->tail + unit_count * q->unit_bytes) <= - (q->head + q->buf_bytes - q->unit_bytes); + if (q->tail >= q->head) + return (q->tail + unit_count * q->unit_bytes) <= + (q->head + q->buf_bytes - q->unit_bytes); + else + return (q->tail + unit_count * q->unit_bytes) <= + (q->head - q->unit_bytes); } void queue_add_units(struct queue *q, const void *src, int unit_count) |