diff --git a/src/wwaninfo.c b/src/wwaninfo.c
index 1d0cc1efb18b50bb726e2d8c83e4465f1b9c2e90..2ae8058680e4f239245ec7bcdcec4a9f3d51baa3 100644
--- a/src/wwaninfo.c
+++ b/src/wwaninfo.c
@@ -235,8 +235,10 @@ phosh_wwan_info_dispose (GObject *object)
 
   if (priv->wwan) {
     for (int i=0; i < WWAN_INFO_WWAN_NUM_SIGNALS; i++) {
-      g_signal_handler_disconnect (priv->wwan, priv->wwan_signal_ids[i]);
-      priv->wwan_signal_ids[i] = 0;
+      if (priv->wwan_signal_ids[i] > 0) {
+        g_signal_handler_disconnect (priv->wwan, priv->wwan_signal_ids[i]);
+        priv->wwan_signal_ids[i] = 0;
+      }
     }
     g_clear_object (&priv->wwan);
   }