discomfitor pushed a commit to branch enlightenment-0.18. http://git.enlightenment.org/core/enlightenment.git/commit/?id=1bbcf1573a6024ae9882c2bff73afb6ea1ff2716
commit 1bbcf1573a6024ae9882c2bff73afb6ea1ff2716 Author: Mike Blumenkrantz <[email protected]> Date: Mon Feb 17 12:02: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_border.c | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/src/bin/e_border.c b/src/bin/e_border.c index 94f62c6..f8c0f87 100644 --- a/src/bin/e_border.c +++ b/src/bin/e_border.c @@ -4913,7 +4913,11 @@ _e_border_del(E_Border *bd) if (bd->exe_inst->phony && (eina_list_count(bd->exe_inst->borders) == 1)) e_exec_phony_del(bd->exe_inst); else - bd->exe_inst->borders = eina_list_remove(bd->exe_inst->borders, bd); + { + bd->exe_inst->borders = eina_list_remove(bd->exe_inst->borders, bd); + if (bd->exe_inst->deleted) + e_object_unref(E_OBJECT(bd)); + } bd->exe_inst = NULL; } --
