Bug 568723 – g_buffered_input_stream_fill_async doesn't take count == -1
authorRyan Lortie <desrt@desrt.ca>
Thu, 22 Jan 2009 19:18:26 +0000 (19:18 +0000)
committerRyan Lortie <ryanl@src.gnome.org>
Thu, 22 Jan 2009 19:18:26 +0000 (19:18 +0000)
2009-01-22  Ryan Lortie  <desrt@desrt.ca>

        Bug 568723 – g_buffered_input_stream_fill_async doesn't take count == -1

        * gbufferedinputstream.c (g_buffered_input_stream_fill_async,
        g_buffered_input_stream_fill): check for count < -1 instead of count <
        0 and copy modified check to non-async version for consistency.
        document the "count = -1" API.

svn path=/trunk/; revision=7828

gio/ChangeLog
gio/gbufferedinputstream.c

index 02276f36c2006c15b6a9048801102f38c9331865..a3679d5a4cc0cc0a8893bc30784679214f3e0268 100644 (file)
@@ -1,3 +1,12 @@
+2009-01-22  Ryan Lortie  <desrt@desrt.ca>
+
+       Bug 568723 – g_buffered_input_stream_fill_async doesn't take count == -1
+
+       * gbufferedinputstream.c (g_buffered_input_stream_fill_async,
+       g_buffered_input_stream_fill): check for count < -1 instead of count <
+       0 and copy modified check to non-async version for consistency.
+       document the "count = -1" API.
+
 2009-01-22  Ryan Lortie  <desrt@desrt.ca>
 
        Bug 568741 – g_buffered_input_stream_fill_async doesn't work
index a19a26eec1eabb0914cea900dd44b5b536519390..d49b528924a8bd49a77e9c444ef367252912c3f7 100644 (file)
@@ -380,6 +380,9 @@ g_buffered_input_stream_new_sized (GInputStream *base_stream,
  * can happen e.g. near the end of a file. Zero is returned on end of file
  * (or if @count is zero),  but never otherwise.
  *
+ * If @count is -1 then the attempted read size is equal to the number of
+ * bytes that are required to fill the buffer.
+ *
  * If @cancellable is not %NULL, then the operation can be cancelled by
  * triggering the cancellable object from another thread. If the operation
  * was cancelled, the error %G_IO_ERROR_CANCELLED will be returned. If an
@@ -408,6 +411,13 @@ g_buffered_input_stream_fill (GBufferedInputStream  *stream,
   
   input_stream = G_INPUT_STREAM (stream);
   
+  if (count < -1)
+    {
+      g_set_error (error, G_IO_ERROR, G_IO_ERROR_INVALID_ARGUMENT,
+                   _("Too large count value passed to %s"), G_STRFUNC);
+      return -1;
+    }
+
   if (!g_input_stream_set_pending (input_stream, error))
     return -1;
 
@@ -440,7 +450,7 @@ async_fill_callback_wrapper (GObject      *source_object,
 /**
  * g_buffered_input_stream_fill_async:
  * @stream: #GBufferedInputStream.
- * @count: a #gssize.
+ * @count: the number of bytes that will be read from the stream.
  * @io_priority: the <link linkend="io-priority">I/O priority</link> 
  *     of the request.
  * @cancellable: optional #GCancellable object
@@ -450,6 +460,9 @@ async_fill_callback_wrapper (GObject      *source_object,
  * Reads data into @stream's buffer asynchronously, up to @count size.
  * @io_priority can be used to prioritize reads. For the synchronous
  * version of this function, see g_buffered_input_stream_fill().
+ *
+ * If @count is -1 then the attempted read size is equal to the number
+ * of bytes that are required to fill the buffer.
  **/
 void
 g_buffered_input_stream_fill_async (GBufferedInputStream *stream,
@@ -476,7 +489,7 @@ g_buffered_input_stream_fill_async (GBufferedInputStream *stream,
       return;
     }
   
-  if (((gssize) count) < 0)
+  if (count < -1)
     {
       g_simple_async_report_error_in_idle (G_OBJECT (stream),
                                           callback,