[glib: 1/3] subprocess: Fix communicate_cancelled signature
- From: Philip Withnall <pwithnall src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [glib: 1/3] subprocess: Fix communicate_cancelled signature
- Date: Tue, 28 Aug 2018 10:32:22 +0000 (UTC)
commit 5cc4cca9c6166284f4834f0c055aba806f0e0b0b
Author: Marco Trevisan (TreviƱo) <mail 3v1n0 net>
Date: Fri Aug 24 06:05:03 2018 +0200
subprocess: Fix communicate_cancelled signature
The source callback for a GCancellable should have the cancellable itself
as first argument.
This was not the case, and when this code was hit, we were instead trying
to treat the pointer as a CommunicateState reference and thus wrongly
deferencing it, causing a memory error and a crash.
gio/gsubprocess.c | 7 +++++--
1 file changed, 5 insertions(+), 2 deletions(-)
---
diff --git a/gio/gsubprocess.c b/gio/gsubprocess.c
index 31822e59c..23bfbddf2 100644
--- a/gio/gsubprocess.c
+++ b/gio/gsubprocess.c
@@ -1528,7 +1528,8 @@ g_subprocess_communicate_made_progress (GObject *source_object,
}
static gboolean
-g_subprocess_communicate_cancelled (gpointer user_data)
+g_subprocess_communicate_cancelled (GCancellable *cancellable,
+ gpointer user_data)
{
CommunicateState *state = user_data;
@@ -1580,7 +1581,9 @@ g_subprocess_communicate_internal (GSubprocess *subprocess,
{
state->cancellable_source = g_cancellable_source_new (cancellable);
/* No ref held here, but we unref the source from state's free function */
- g_source_set_callback (state->cancellable_source, g_subprocess_communicate_cancelled, state, NULL);
+ g_source_set_callback (state->cancellable_source,
+ G_SOURCE_FUNC (g_subprocess_communicate_cancelled),
+ state, NULL);
g_source_attach (state->cancellable_source, g_main_context_get_thread_default ());
}
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]