gatmux: fix read channel remove on error

In case of invalid IO, read_watch is not reset. This fix crash on
destroy gatmux.
This commit is contained in:
Antoine Aubert 2016-10-05 08:42:28 +02:00 committed by Denis Kenzior
parent 54fb56df24
commit da47398525
1 changed files with 8 additions and 1 deletions

View File

@ -598,6 +598,13 @@ void g_at_mux_unref(GAtMux *mux)
}
}
static void read_watcher_destroy_notify(gpointer user_data)
{
GAtMux *mux = user_data;
mux->read_watch = 0;
}
gboolean g_at_mux_start(GAtMux *mux)
{
if (mux->channel == NULL)
@ -611,7 +618,7 @@ gboolean g_at_mux_start(GAtMux *mux)
mux->read_watch = g_io_add_watch_full(mux->channel, G_PRIORITY_DEFAULT,
G_IO_IN | G_IO_HUP | G_IO_ERR | G_IO_NVAL,
received_data, mux, NULL);
received_data, mux, read_watcher_destroy_notify);
mux->shutdown = FALSE;