summaryrefslogtreecommitdiff
path: root/gio
diff options
context:
space:
mode:
authorRyan Lortie <desrt@desrt.ca>2009-01-22 19:18:26 +0000
committerRyan Lortie <ryanl@src.gnome.org>2009-01-22 19:18:26 +0000
commitfc10cb46adc1dfb6d86f323323d38c4507fff0ed (patch)
treeedf31565d3314bb21b0f1f6587f67d3479bb4585 /gio
parentfb50c2ae1ad54acab577f7cf7202ae05dfa06a73 (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/ChangeLog9
-rw-r--r--gio/gbufferedinputstream.c17
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,