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; } --
