aboutsummaryrefslogtreecommitdiff
path: root/src/mm-port-serial.c
diff options
context:
space:
mode:
authorAleksander Morgado <aleksander@aleksander.es>2019-09-04 14:16:08 +0200
committerAleksander Morgado <aleksander@gnu.org>2019-09-04 12:19:20 +0000
commitf684c7130a71a2112eac7ee8fe6b952a667279c7 (patch)
tree013b72789792d537d0616e0d6bd783165855ef4f /src/mm-port-serial.c
parentf6d5490eebd22d2ce679442b03a72e110d113fa9 (diff)
port-serial: don't assume connected_id signal handler is always connected
If the signal is automatically disconnected during object disposal, we shouldn't explicitly try to disconnect it ourselves during finalize(). Reported by: Lubomir Rintel <lkundrak@v3.sk>
Diffstat (limited to 'src/mm-port-serial.c')
-rw-r--r--src/mm-port-serial.c5
1 files changed, 4 insertions, 1 deletions
diff --git a/src/mm-port-serial.c b/src/mm-port-serial.c
index 4067979c..1c2fd2d3 100644
--- a/src/mm-port-serial.c
+++ b/src/mm-port-serial.c
@@ -1387,7 +1387,10 @@ _close_internal (MMPortSerial *self, gboolean force)
return;
if (self->priv->connected_id) {
- g_signal_handler_disconnect (self, self->priv->connected_id);
+ /* Don't assume it's always connected, because it may be automatically connected during
+ * object disposal, and this method is also called in finalize() */
+ if (g_signal_handler_is_connected (self, self->priv->connected_id))
+ g_signal_handler_disconnect (self, self->priv->connected_id);
self->priv->connected_id = 0;
}