From fc10cb46adc1dfb6d86f323323d38c4507fff0ed Mon Sep 17 00:00:00 2001 From: Ryan Lortie Date: Thu, 22 Jan 2009 19:18:26 +0000 Subject: [PATCH] =?utf8?q?Bug=20568723=20=E2=80=93=20g=5Fbuffered=5Finput?= =?utf8?q?=5Fstream=5Ffill=5Fasync=20doesn't=20take=20count=20=3D=3D=20-1?= MIME-Version: 1.0 Content-Type: text/plain; charset=utf8 Content-Transfer-Encoding: 8bit 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 --- gio/ChangeLog | 9 +++++++++ gio/gbufferedinputstream.c | 17 +++++++++++++++-- 2 files changed, 24 insertions(+), 2 deletions(-) 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, -- 2.34.1