Enlightenment CVS committal

Author  : raster
Project : e17
Module  : libs/e_dbus

Dir     : e17/libs/e_dbus/src/lib/dbus


Modified Files:
        e_dbus_signal.c 


Log Message:


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

===================================================================
RCS file: /cvs/e/e17/libs/e_dbus/src/lib/dbus/e_dbus_signal.c,v
retrieving revision 1.3
retrieving revision 1.4
diff -u -3 -r1.3 -r1.4
--- e_dbus_signal.c     7 May 2008 10:36:23 -0000       1.3
+++ e_dbus_signal.c     17 May 2008 08:52:35 -0000      1.4
@@ -53,7 +53,6 @@
 void
 e_dbus_signal_shutdown(void)
 {
-  printf("SHUTDOWN\n");
   if (--init) return;
   ecore_list_destroy(signal_handlers);
 
@@ -68,7 +67,6 @@
 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 @@
   {
     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_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 @@
 
   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



-------------------------------------------------------------------------
This SF.net email is sponsored by: Microsoft 
Defy all challenges. Microsoft(R) Visual Studio 2008. 
http://clk.atdmt.com/MRT/go/vse0120000070mrt/direct/01/
_______________________________________________
enlightenment-cvs mailing list
enlightenment-cvs@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/enlightenment-cvs

Reply via email to