discomfitor pushed a commit to branch master. http://git.enlightenment.org/core/efl.git/commit/?id=a522bf5d7625c49cfd4d25f477633b764f2317f8
commit a522bf5d7625c49cfd4d25f477633b764f2317f8 Author: YeongJong Lee <[email protected]> Date: Mon Jun 25 15:14:01 2018 -0400 ecore_evas: prevent duplicated ecore_evas registration Summary: After a44697c37a304c0d4d574b6772775c6936869e24, we can register same ecore_evas to ecore_evases using ecore_evas_input_event_register. (ecore_evas_input_event_register -> ecore_evas_done -> _ecore_evas_register) This can make infinite loop in EINA_INLIST_FOREACH(ecore_evases, ee) because next inlist of ecore_evases is ecore_evases after double call of _ecore_evas_register. This patch prevent it. Test Plan: Ecore_Evas *ee = ecore_evas_new(NULL, 0, 0, 800, 600, NULL); ecore_evas_input_event_register(ee); (part of document of ecore_fb_input_device_window_set) Check that there is no infinite loop Reviewers: zmike, devilhorns Reviewed By: zmike Subscribers: cedric, #committers Tags: #efl Differential Revision: https://phab.enlightenment.org/D6390 --- src/lib/ecore_evas/ecore_evas.c | 2 ++ 1 file changed, 2 insertions(+) diff --git a/src/lib/ecore_evas/ecore_evas.c b/src/lib/ecore_evas/ecore_evas.c index da3401a286..52dfc36db1 100644 --- a/src/lib/ecore_evas/ecore_evas.c +++ b/src/lib/ecore_evas/ecore_evas.c @@ -3256,6 +3256,8 @@ _ecore_evas_register_animators(Ecore_Evas *ee) EAPI void _ecore_evas_register(Ecore_Evas *ee) { + if (ee->registered) return; + ee->registered = 1; ecore_evases = (Ecore_Evas *)eina_inlist_prepend (EINA_INLIST_GET(ecore_evases), EINA_INLIST_GET(ee)); --
