gnunet-svn
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[GNUnet-SVN] r32940 - gnunet-gtk/src/main


From: gnunet
Subject: [GNUnet-SVN] r32940 - gnunet-gtk/src/main
Date: Mon, 7 Apr 2014 20:17:39 +0200

Author: grothoff
Date: 2014-04-07 20:17:39 +0200 (Mon, 07 Apr 2014)
New Revision: 32940

Modified:
   gnunet-gtk/src/main/gnunet-gtk.c
Log:
-fix segv on shutdown

Modified: gnunet-gtk/src/main/gnunet-gtk.c
===================================================================
--- gnunet-gtk/src/main/gnunet-gtk.c    2014-04-07 18:11:22 UTC (rev 32939)
+++ gnunet-gtk/src/main/gnunet-gtk.c    2014-04-07 18:17:39 UTC (rev 32940)
@@ -74,6 +74,11 @@
    */
   GNUNET_SCHEDULER_TaskIdentifier restart_task;
 
+  /**
+   * ID of the signal associated with the window.
+   */
+  gulong sig_id;
+
 };
 
 
@@ -145,6 +150,8 @@
       GNUNET_SCHEDULER_cancel (p->restart_task);
       p->restart_task = GNUNET_SCHEDULER_NO_TASK;
     }
+    g_signal_handler_disconnect (p->s,
+                                 p->sig_id);
     GNUNET_CONTAINER_DLL_remove (p_head,
                                  p_tail,
                                  p);
@@ -230,9 +237,12 @@
 {
   struct Plug *p = userdata;
 
-  (void) GNUNET_OS_process_kill (p->proc, SIGTERM);
-  GNUNET_OS_process_destroy (p->proc);
-  p->proc = NULL;
+  if (NULL != p->proc)
+  {
+    (void) GNUNET_OS_process_kill (p->proc, SIGTERM);
+    GNUNET_OS_process_destroy (p->proc);
+    p->proc = NULL;
+  }
   p->backoff = GNUNET_TIME_STD_BACKOFF (p->backoff);
   p->restart_task = GNUNET_SCHEDULER_add_delayed (p->backoff,
                                                   &restart_process,
@@ -264,10 +274,10 @@
   gtk_container_add (v, p->s);
   p->binary = binary;
   p->env_var = env_var;
-  g_signal_connect (p->s,
-                    "plug-removed",
-                    G_CALLBACK (handle_remove),
-                    p);
+  p->sig_id = g_signal_connect (p->s,
+                                "plug-removed",
+                                G_CALLBACK (handle_remove),
+                                p);
   start_process (p);
   gtk_widget_show (p->s);
   GNUNET_CONTAINER_DLL_insert (p_head,




reply via email to

[Prev in Thread] Current Thread [Next in Thread]