From a14fb05395ed6155535b419e4eddbc7d57d2675e Mon Sep 17 00:00:00 2001 From: Lauro Moura Date: Tue, 27 Aug 2019 23:58:06 +0000 Subject: [PATCH] mvvm: Fix Layout_Factory property bound event We should keep the key alive at least until the `property,bound` event is emmitted. Reviewed-by: Marcel Hollerbach Differential Revision: https://phab.enlightenment.org/D9759 --- src/lib/elementary/efl_ui_layout_factory.c | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/src/lib/elementary/efl_ui_layout_factory.c b/src/lib/elementary/efl_ui_layout_factory.c index e13971e666..58c8235b9e 100644 --- a/src/lib/elementary/efl_ui_layout_factory.c +++ b/src/lib/elementary/efl_ui_layout_factory.c @@ -138,7 +138,8 @@ EOLIAN static Eina_Error _efl_ui_layout_factory_efl_ui_property_bind_property_bind(Eo *obj EINA_UNUSED, Efl_Ui_Layout_Factory_Data *pd, const char *key, const char *property) { - Eina_Stringshare *ss_key, *ss_prop, *ss_old; + Eina_Stringshare *ss_key, *ss_prop; + Eina_Stringshare *ss_old = NULL; ss_key = eina_stringshare_add(key); if (property == NULL) @@ -150,11 +151,11 @@ _efl_ui_layout_factory_efl_ui_property_bind_property_bind(Eo *obj EINA_UNUSED, E ss_prop = eina_stringshare_add(property); ss_old = eina_hash_set(pd->bind.properties, ss_key, ss_prop); if (ss_old) eina_stringshare_del(ss_old); - else ss_key = NULL; // Prevent destruction of key to keep at least one reference end: efl_event_callback_call(obj, EFL_UI_PROPERTY_BIND_EVENT_PROPERTY_BOUND, (void*) ss_key); - eina_stringshare_del(ss_key); + // Only delete our key ref it it was already present in the property hash + if (ss_old) eina_stringshare_del(ss_key); return 0; }