From 74cd5499ea794ebfb874b9fe6a4edc6f29ea124d Mon Sep 17 00:00:00 2001 From: Nicolas Pennequin Date: Thu, 11 Oct 2007 18:25:33 +0200 Subject: [PATCH] Check for the case when no data is ready and the required size was 0. --- apps/buffering.c | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/apps/buffering.c b/apps/buffering.c index 6e7d6ce88..a10b66065 100644 --- a/apps/buffering.c +++ b/apps/buffering.c @@ -828,6 +828,11 @@ ssize_t bufread(int handle_id, size_t size, char *dest) if (!h) return -1; + if (size == 0 && h->filerem > 0 && + h->available - RINGBUF_SUB(h->ridx, h->data) == 0) + /* Data isn't ready */ + return -2; + if (h->available - RINGBUF_SUB(h->ridx, h->data) < size && h->filerem > 0) /* Data isn't ready */ return -2; @@ -861,6 +866,11 @@ ssize_t bufgetdata(int handle_id, size_t size, unsigned char **data) if (!h) return -1; + if (size == 0 && h->filerem > 0 && + h->available - RINGBUF_SUB(h->ridx, h->data) == 0) + /* Data isn't ready */ + return -2; + if (h->available - RINGBUF_SUB(h->ridx, h->data) < size && h->filerem > 0) /* Data isn't ready */ return -2; -- 2.11.4.GIT