[Pkg-e-commits] [SCM] D-Bus integration for EFL based applications branch, upstream-vcs, updated. de96e02c71c95d629bfde702b223060254b81ef7

raster raster at alioth.debian.org
Sat May 24 16:10:51 UTC 2008


The following commit has been merged in the upstream-vcs branch:
commit 61760ac1afbd8c71c0024c3024674e1d78df59c0
Author: raster <raster>
Date:   Sat May 17 08:52:35 2008 +0000

    fix segv. the list frees already on removal. double free.

diff --git a/src/lib/dbus/e_dbus_signal.c b/src/lib/dbus/e_dbus_signal.c
index d410397..fe3221f 100644
--- a/src/lib/dbus/e_dbus_signal.c
+++ b/src/lib/dbus/e_dbus_signal.c
@@ -53,7 +53,6 @@ e_dbus_signal_init(void)
 void
 e_dbus_signal_shutdown(void)
 {
-  printf("SHUTDOWN\n");
   if (--init) return;
   ecore_list_destroy(signal_handlers);
 
@@ -68,7 +67,6 @@ e_dbus_signal_shutdown(void)
 void
 e_dbus_signal_handler_free(E_DBus_Signal_Handler *sh)
 {
-  printf("free: %p\n", sh);
   if (sh->sender) free(sh->sender);
   if (sh->path) free(sh->path);
   if (sh->interface) free(sh->interface);
@@ -89,7 +87,6 @@ cb_name_owner(void *data, DBusMessage *msg, DBusError *err)
   {
     if (ecore_list_goto(signal_handlers, sh))
       ecore_list_remove(signal_handlers);
-    e_dbus_signal_handler_free(sh);
     dbus_error_free(err);
     return;
   }
@@ -189,8 +186,6 @@ e_dbus_signal_handler_del(E_DBus_Connection *conn, E_DBus_Signal_Handler *sh)
     e_dbus_handler_deletions = 1;
     return;
   }
-  if (!ecore_list_goto(signal_handlers, sh)) return;
-  ecore_list_remove(signal_handlers);
 
   strcpy(match, "type='signal'");
   len = 13;
@@ -213,7 +208,8 @@ e_dbus_signal_handler_del(E_DBus_Connection *conn, E_DBus_Signal_Handler *sh)
 
   dbus_bus_remove_match(conn->conn, match, NULL);
 
-  e_dbus_signal_handler_free(sh);
+  if (!ecore_list_goto(signal_handlers, sh)) return;
+  ecore_list_remove(signal_handlers);
 }
 
 static int

-- 
D-Bus integration for EFL based applications



More information about the Pkg-e-commits mailing list