From b22831fb30b1114464c29ac98f0c8fde86235cf2 Mon Sep 17 00:00:00 2001 From: "Carsten Haitzler (Rasterman)" Date: Sun, 8 Mar 2020 12:27:02 +0000 Subject: [PATCH] efm/widget robustness - handle cleared or invalid widgets --- src/bin/e_widget_label.c | 15 ++++++--------- src/bin/e_widget_table.c | 15 ++++++--------- 2 files changed, 12 insertions(+), 18 deletions(-) diff --git a/src/bin/e_widget_label.c b/src/bin/e_widget_label.c index 7cb353c2c..dfd042196 100644 --- a/src/bin/e_widget_label.c +++ b/src/bin/e_widget_label.c @@ -50,27 +50,24 @@ e_widget_label_add(Evas *evas, const char *label) E_API void e_widget_label_text_set(Evas_Object *obj, const char *text) { - E_Widget_Data *wd; - - wd = e_widget_data_get(obj); + E_Widget_Data *wd = e_widget_data_get(obj); + if (!wd) return; elm_object_text_set(wd->text, text); } static void _e_wid_del_hook(Evas_Object *obj) { - E_Widget_Data *wd; - - wd = e_widget_data_get(obj); + E_Widget_Data *wd = e_widget_data_get(obj); free(wd); + if (!wd) return; } static void _e_wid_disable_hook(Evas_Object *obj) { - E_Widget_Data *wd; - - wd = e_widget_data_get(obj); + E_Widget_Data *wd = e_widget_data_get(obj); + if (!wd) return; elm_object_disabled_set(wd->text, e_widget_disabled_get(obj)); } diff --git a/src/bin/e_widget_table.c b/src/bin/e_widget_table.c index 0fd473381..41dce3ae7 100644 --- a/src/bin/e_widget_table.c +++ b/src/bin/e_widget_table.c @@ -45,9 +45,8 @@ e_widget_table_object_append(Evas_Object *obj, Evas_Object *sobj, int col, int r E_API void e_widget_table_object_align_append(Evas_Object *obj, Evas_Object *sobj, int col, int row, int colspan, int rowspan, int fill_w, int fill_h, int expand_w, int expand_h, double ax, double ay) { - E_Widget_Data *wd; - - wd = e_widget_data_get(obj); + E_Widget_Data *wd = e_widget_data_get(obj); + if (!wd) return; if (fill_w) ax = -1; if (fill_h) ay = -1; @@ -70,9 +69,8 @@ e_widget_table_object_repack(Evas_Object *obj EINA_UNUSED, Evas_Object *sobj, in E_API void e_widget_table_unpack(Evas_Object *obj, Evas_Object *sobj) { - E_Widget_Data *wd; - - wd = e_widget_data_get(obj); + E_Widget_Data *wd = e_widget_data_get(obj); + if (!wd) return; e_widget_sub_object_del(obj, sobj); elm_table_unpack(wd->o_table, sobj); } @@ -80,9 +78,8 @@ e_widget_table_unpack(Evas_Object *obj, Evas_Object *sobj) static void _e_wid_del_hook(Evas_Object *obj) { - E_Widget_Data *wd; - - wd = e_widget_data_get(obj); + E_Widget_Data *wd = e_widget_data_get(obj); + if (!wd) return; free(wd); }