In case of invalid IO, read_watch is not reset. This fix crash on destroy 
gatmux.
---
 gatchat/gatmux.c | 9 ++++++++-
 1 file changed, 8 insertions(+), 1 deletion(-)

diff --git a/gatchat/gatmux.c b/gatchat/gatmux.c
index 9beeece..074e340 100644
--- a/gatchat/gatmux.c
+++ b/gatchat/gatmux.c
@@ -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;
 
-- 
2.7.4

_______________________________________________
ofono mailing list
[email protected]
https://lists.ofono.org/mailman/listinfo/ofono

Reply via email to