Bug 568741 – g_buffered_input_stream_fill_async doesn't work
authorRyan Lortie <desrt@desrt.ca>
Thu, 22 Jan 2009 19:00:05 +0000 (19:00 +0000)
committerRyan Lortie <ryanl@src.gnome.org>
Thu, 22 Jan 2009 19:00:05 +0000 (19:00 +0000)
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
        after we have successfully read data from the base stream

svn path=/trunk/; revision=7827

gio/ChangeLog
gio/gbufferedinputstream.c

index e5ded97..02276f3 100644 (file)
@@ -1,3 +1,10 @@
+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
+       after we have successfully read data from the base stream
+
 2009-01-20  Ryan Lortie  <desrt@desrt.ca>
 
        Bug 568394 – dropping the last reference to a stream filter closes the
index 4ffdff7..a19a26e 100644 (file)
@@ -931,6 +931,19 @@ fill_async_callback (GObject      *source_object,
       g_simple_async_result_set_from_error (simple, error);
       g_error_free (error);
     }
+  else
+    {
+      GBufferedInputStreamPrivate *priv;
+      GObject *object;
+
+      object = g_async_result_get_source_object (G_ASYNC_RESULT (simple));
+      priv = G_BUFFERED_INPUT_STREAM (object)->priv;
+
+      g_assert_cmpint (priv->end + res, <=, priv->len);
+      priv->end += res;
+
+      g_object_unref (object);
+    }
   
   /* Complete immediately, not in idle, since we're already in a mainloop callout */
   g_simple_async_result_complete (simple);