diff options
author | Ryan Lortie <desrt@desrt.ca> | 2009-01-22 19:18:26 +0000 |
---|---|---|
committer | Ryan Lortie <ryanl@src.gnome.org> | 2009-01-22 19:18:26 +0000 |
commit | fc10cb46adc1dfb6d86f323323d38c4507fff0ed (patch) | |
tree | edf31565d3314bb21b0f1f6587f67d3479bb4585 /gio | |
parent | fb50c2ae1ad54acab577f7cf7202ae05dfa06a73 (diff) |
Bug 568723 – g_buffered_input_stream_fill_async doesn't take count == -1
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
Diffstat (limited to 'gio')
-rw-r--r-- | gio/ChangeLog | 9 | ||||
-rw-r--r-- | gio/gbufferedinputstream.c | 17 |
2 files changed, 24 insertions, 2 deletions
diff --git a/gio/ChangeLog b/gio/ChangeLog index 02276f36c..a3679d5a4 100644 --- a/gio/ChangeLog +++ b/gio/ChangeLog @@ -1,5 +1,14 @@ 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 * gbufferedinputstream.c (fill_async_callback): grow the buffer tail diff --git a/gio/gbufferedinputstream.c b/gio/gbufferedinputstream.c index a19a26eec..d49b52892 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 <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, |