gio: callback_data is the task not the task data.
authorAlban Browaeys <prahal@yahoo.com>
Tue, 15 Jan 2013 23:04:58 +0000 (00:04 +0100)
committerDan Winship <danw@gnome.org>
Wed, 16 Jan 2013 15:12:46 +0000 (10:12 -0500)
skip_callback_wrapper expect the user_data (callback_data)
to be the task holding the task_data, not the task_data
itself.
Otherwise the task_data is cast as GTask and then task_data
is extracted from this bogus task.

https://bugzilla.gnome.org/show_bug.cgi?id=691812

gio/ginputstream.c

index c6fa332..5fbf025 100644 (file)
@@ -1234,7 +1234,7 @@ skip_callback_wrapper (GObject      *source_object,
                              data->buffer, MIN (8192, data->count),
                              g_task_get_priority (task),
                              g_task_get_cancellable (task),
-                             skip_callback_wrapper, data);
+                             skip_callback_wrapper, task);
          return;
        }
     }
@@ -1293,7 +1293,7 @@ g_input_stream_real_skip_async (GInputStream        *stream,
       g_task_set_task_data (task, data, g_free);
       g_task_set_check_cancellable (task, FALSE);
       class->read_async (stream, data->buffer, MIN (8192, count), io_priority, cancellable,
-                        skip_callback_wrapper, data);
+                        skip_callback_wrapper, task);
     }
 
 }