From: Ryan Lortie Date: Thu, 22 Jan 2009 19:18:26 +0000 (+0000) Subject: Bug 568723 – g_buffered_input_stream_fill_async doesn't take count == -1 X-Git-Url: http://git.openbox.org/?a=commitdiff_plain;h=fc10cb46adc1dfb6d86f323323d38c4507fff0ed;p=dana%2Fcg-glib.git Bug 568723 – g_buffered_input_stream_fill_async doesn't take count == -1 2009-01-22 Ryan Lortie 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 --- diff --git a/gio/ChangeLog b/gio/ChangeLog index 02276f36..a3679d5a 100644 --- a/gio/ChangeLog +++ b/gio/ChangeLog @@ -1,3 +1,12 @@ +2009-01-22 Ryan Lortie + + 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 Bug 568741 – g_buffered_input_stream_fill_async doesn't work diff --git a/gio/gbufferedinputstream.c b/gio/gbufferedinputstream.c index a19a26ee..d49b5289 100644 --- a/gio/gbufferedinputstream.c +++ b/gio/gbufferedinputstream.c @@ -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 I/O priority * 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,