bufread, bufgetdata: Better check for when data isn't ready.
authorNicolas Pennequin <nicolas.pennequin@free.fr>
Tue, 7 Aug 2007 21:37:00 +0000 (7 23:37 +0200)
committerNicolas Pennequin <nicolas.pennequin@free.fr>
Tue, 7 Aug 2007 21:37:00 +0000 (7 23:37 +0200)
The only case when the caller should get less data than requested is near
the end of the file. When not enough data has been buffered, the caller has
to wait.

testplugin.c

index e18523f..41a248a 100644 (file)
@@ -688,7 +688,7 @@ ssize_t bufread(int handle_id, size_t size, char *dest)
     if (!h)
         return -1;
 
-    if (h->available == 0 && h->filerem > 0)  /* Data isn't ready */
+    if (h->available < size && h->filerem > 0) /* Data isn't ready */
         return -2;
 
     if (h->available == 0 && h->filerem == 0) /* File is finished reading */
@@ -719,7 +719,7 @@ ssize_t bufgetdata(int handle_id, size_t size, unsigned char **data)
     if (!h)
         return -1;
 
-    if (h->available == 0 && h->filerem > 0)  /* Data isn't ready */
+    if (h->available < size && h->filerem > 0) /* Data isn't ready */
         return -2;
 
     if (h->available == 0 && h->filerem == 0) /* File is finished reading */