sachiel pushed a commit to branch master.

http://git.enlightenment.org/core/enlightenment.git/commit/?id=4c2db4342a1e0505eedf57ebde0894e1c8f330f7

commit 4c2db4342a1e0505eedf57ebde0894e1c8f330f7
Author: Mike Blumenkrantz <[email protected]>
Date:   Mon Feb 17 11:59:27 2014 -0500

    bugfix: unref client when removing from exec if exec is deleted
    
    fixes a race condition where client would never be freed when closing lots 
of windows simultaneously
---
 src/bin/e_client.c | 6 +++++-
 1 file changed, 5 insertions(+), 1 deletion(-)

diff --git a/src/bin/e_client.c b/src/bin/e_client.c
index 7667c05..9cee266 100644
--- a/src/bin/e_client.c
+++ b/src/bin/e_client.c
@@ -488,7 +488,11 @@ _e_client_del(E_Client *ec)
         if (ec->exe_inst->phony && (eina_list_count(ec->exe_inst->clients) == 
1))
           e_exec_phony_del(ec->exe_inst);
         else
-          ec->exe_inst->clients = eina_list_remove(ec->exe_inst->clients, ec);
+          {
+             ec->exe_inst->clients = eina_list_remove(ec->exe_inst->clients, 
ec);
+             if (ec->exe_inst->deleted)
+               e_object_unref(E_OBJECT(ec));
+          }
         ec->exe_inst = NULL;
      }
 

-- 


Reply via email to