Always check for valid evas object.
author3v1n0 <3v1n0>
Sun, 12 Dec 2010 19:12:43 +0000 (19:12 +0000)
committer3v1n0 <3v1n0@7cbeb6ba-43b4-40fd-8cce-4c39aea84d33>
Sun, 12 Dec 2010 19:12:43 +0000 (19:12 +0000)
If you try to create a new widget, you must be sure that the parent
is really an evas object.

With the previous implementation it was possible to call an _add
function for an elementary widget with any non-null pointer as parent
eventually causing crashes (like with the elm_box).

SVN revision: 55521

52 files changed:
src/lib/elc_anchorblock.c
src/lib/elc_anchorview.c
src/lib/elc_ctxpopup.c
src/lib/elc_fileselector.c
src/lib/elc_fileselector_button.c
src/lib/elc_fileselector_entry.c
src/lib/elc_hoversel.c
src/lib/elc_scrolled_entry.c
src/lib/elm_actionslider.c
src/lib/elm_bg.c
src/lib/elm_box.c
src/lib/elm_bubble.c
src/lib/elm_button.c
src/lib/elm_calendar.c
src/lib/elm_check.c
src/lib/elm_clock.c
src/lib/elm_colorselector.c
src/lib/elm_conform.c
src/lib/elm_entry.c
src/lib/elm_flip.c
src/lib/elm_flipselector.c
src/lib/elm_frame.c
src/lib/elm_gengrid.c
src/lib/elm_genlist.c
src/lib/elm_hover.c
src/lib/elm_icon.c
src/lib/elm_image.c
src/lib/elm_index.c
src/lib/elm_label.c
src/lib/elm_layout.c
src/lib/elm_list.c
src/lib/elm_map.c
src/lib/elm_mapbuf.c
src/lib/elm_menu.c
src/lib/elm_notify.c
src/lib/elm_pager.c
src/lib/elm_panel.c
src/lib/elm_panes.c
src/lib/elm_photo.c
src/lib/elm_photocam.c
src/lib/elm_progressbar.c
src/lib/elm_radio.c
src/lib/elm_scroller.c
src/lib/elm_separator.c
src/lib/elm_slider.c
src/lib/elm_slideshow.c
src/lib/elm_spinner.c
src/lib/elm_table.c
src/lib/elm_thumb.c
src/lib/elm_toggle.c
src/lib/elm_toolbar.c
src/lib/elm_widget.h

index 7602af0..7c75062 100644 (file)
@@ -187,6 +187,7 @@ elm_anchorblock_add(Evas_Object *parent)
 
    wd = ELM_NEW(Widget_Data);
    e = evas_object_evas_get(parent);
+   if (!e) return NULL;
    obj = elm_widget_add(e);
    ELM_SET_WIDTYPE(widtype, "anchorblock");
    elm_widget_type_set(obj, "anchorblock");
index 7a54c25..df61e53 100644 (file)
@@ -178,6 +178,7 @@ elm_anchorview_add(Evas_Object *parent)
 
    wd = ELM_NEW(Widget_Data);
    e = evas_object_evas_get(parent);
+   if (!e) return NULL;
    obj = elm_widget_add(e);
    ELM_SET_WIDTYPE(widtype, "anchorview");
    elm_widget_type_set(obj, "anchorview");
index 5a3ccf1..8395c43 100644 (file)
@@ -363,6 +363,7 @@ elm_ctxpopup_add(Evas_Object *parent)
 
    wd = ELM_NEW(Widget_Data);
    wd->evas = evas_object_evas_get(parent);
+   if (!wd->evas) return NULL;
    obj = elm_widget_add(wd->evas);
    ELM_SET_WIDTYPE(widtype, "ctxpopup");
    elm_widget_type_set(obj, "ctxpopup");
index f38e55f..2cf3010 100644 (file)
@@ -551,6 +551,7 @@ elm_fileselector_add(Evas_Object *parent)
    EINA_SAFETY_ON_NULL_RETURN_VAL(parent, NULL);
 
    Evas *e = evas_object_evas_get(parent);
+   if (!e) return NULL;
    Evas_Object *obj, *ic, *bt, *li, *en, *grid;
    Widget_Data *wd;
    int s;
index bd98eff..dbdeeb2 100644 (file)
@@ -260,6 +260,7 @@ elm_fileselector_button_add(Evas_Object *parent)
    wd->h = 400;
 
    e = evas_object_evas_get(parent);
+   if (!e) return NULL;
    obj = elm_widget_add(e);
    ELM_SET_WIDTYPE(widtype, "fileselector_button");
    elm_widget_type_set(obj, "fileselector_button");
index 4bcabed..7b0ad6d 100644 (file)
@@ -211,6 +211,7 @@ elm_fileselector_entry_add(Evas_Object *parent)
 {
    Evas_Object *obj;
    Evas *e = evas_object_evas_get(parent);
+   if (!e) return NULL;
    Widget_Data *wd;
 
    EINA_SAFETY_ON_NULL_RETURN_VAL(parent, NULL);
index b87f033..0ee816e 100644 (file)
@@ -262,6 +262,7 @@ elm_hoversel_add(Evas_Object *parent)
 
    wd = ELM_NEW(Widget_Data);
    e = evas_object_evas_get(parent);
+   if (!e) return NULL;
    obj = elm_widget_add(e);
    ELM_SET_WIDTYPE(widtype, "hoversel");
    elm_widget_type_set(obj, "hoversel");
index acf280e..a72e00b 100644 (file)
@@ -364,6 +364,7 @@ elm_scrolled_entry_add(Evas_Object *parent)
 
    wd = ELM_NEW(Widget_Data);
    e = evas_object_evas_get(parent);
+   if (!e) return NULL;
    obj = elm_widget_add(e);
    ELM_SET_WIDTYPE(widtype, "scrolled_entry");
    elm_widget_type_set(obj, "scrolled_entry");
index 8de577b..a4b1e1b 100644 (file)
@@ -271,6 +271,7 @@ elm_actionslider_add(Evas_Object *parent)
 
    wd = ELM_NEW(Widget_Data);
    e = evas_object_evas_get(parent);
+   if (!e) return NULL;
    obj = elm_widget_add(e);
    ELM_SET_WIDTYPE(widtype, "actionslider");
    elm_widget_type_set(obj, "actionslider");
index 2c11ca9..50dd1e0 100644 (file)
@@ -136,6 +136,7 @@ elm_bg_add(Evas_Object *parent)
 
    wd = ELM_NEW(Widget_Data);
    e = evas_object_evas_get(parent);
+   if (!e) return NULL;
    obj = elm_widget_add(e);
    ELM_SET_WIDTYPE(widtype, "bg");
    elm_widget_type_set(obj, "bg");
index fff25d8..0d6449d 100644 (file)
@@ -344,6 +344,7 @@ elm_box_add(Evas_Object *parent)
 
    wd = ELM_NEW(Widget_Data);
    e = evas_object_evas_get(parent);
+   if (!e) return NULL;
    obj = elm_widget_add(e);
    ELM_SET_WIDTYPE(widtype, "box");
    elm_widget_type_set(obj, "box");
index c3cea50..e24c6ff 100644 (file)
@@ -152,6 +152,7 @@ elm_bubble_add(Evas_Object *parent)
 
    wd = ELM_NEW(Widget_Data);
    e = evas_object_evas_get(parent);
+   if (!e) return NULL;
    obj = elm_widget_add(e);
    ELM_SET_WIDTYPE(widtype, "bubble");
    elm_widget_type_set(obj, "bubble");
index b25316e..3a1645a 100644 (file)
@@ -302,6 +302,7 @@ elm_button_add(Evas_Object *parent)
 
    wd = ELM_NEW(Widget_Data);
    e = evas_object_evas_get(parent);
+   if (!e) return NULL;
    obj = elm_widget_add(e);
    ELM_SET_WIDTYPE(widtype, "button");
    elm_widget_type_set(obj, "button");
index c30cc12..a4a8487 100644 (file)
@@ -718,6 +718,7 @@ elm_calendar_add(Evas_Object *parent)
 
    wd = ELM_NEW(Widget_Data);
    e = evas_object_evas_get(parent);
+   if (!e) return NULL;
    obj = elm_widget_add(e);
    ELM_SET_WIDTYPE(widtype, "calendar");
    elm_widget_type_set(obj, "calendar");
index a4e6d4b..00badfa 100644 (file)
@@ -239,6 +239,7 @@ elm_check_add(Evas_Object *parent)
 
    wd = ELM_NEW(Widget_Data);
    e = evas_object_evas_get(parent);
+   if (!e) return NULL;
    obj = elm_widget_add(e);
    ELM_SET_WIDTYPE(widtype, "check");
    elm_widget_type_set(obj, "check");
index 9962165..f00dfea 100644 (file)
@@ -534,6 +534,7 @@ elm_clock_add(Evas_Object *parent)
 
    wd = ELM_NEW(Widget_Data);
    e = evas_object_evas_get(parent);
+   if (!e) return NULL;
    obj = elm_widget_add(e);
    ELM_SET_WIDTYPE(widtype, "clock");
    elm_widget_type_set(obj, "clock");
index f711852..0ca85c9 100644 (file)
@@ -814,6 +814,7 @@ elm_colorselector_add(Evas_Object *parent)
 
    wd = ELM_NEW(Widget_Data);
    e = evas_object_evas_get(parent);
+   if (!e) return NULL;
    obj = elm_widget_add(e);
    ELM_SET_WIDTYPE(widtype, "colorselector");
    elm_widget_type_set(obj, "colorselector");
index 4f4ec39..34e2e39 100644 (file)
@@ -220,6 +220,7 @@ elm_conformant_add(Evas_Object *parent)
    wd = ELM_NEW(Widget_Data);
 
    evas = evas_object_evas_get(parent);
+   if (!evas) return NULL;
 
    obj = elm_widget_add(evas);
    ELM_SET_WIDTYPE(widtype, "conformant");
index ced00a8..0ed1835 100644 (file)
@@ -1576,6 +1576,7 @@ elm_entry_add(Evas_Object *parent)
 
    wd = ELM_NEW(Widget_Data);
    e = evas_object_evas_get(parent);
+   if (!e) return NULL;
    obj = elm_widget_add(e);
    ELM_SET_WIDTYPE(widtype, "entry");
    elm_widget_type_set(obj, "entry");
index 207122a..7375984 100644 (file)
@@ -409,6 +409,7 @@ elm_flip_add(Evas_Object *parent)
 
    wd = ELM_NEW(Widget_Data);
    e = evas_object_evas_get(parent);
+   if (!e) return NULL;
    obj = elm_widget_add(e);
    ELM_SET_WIDTYPE(widtype, "flip");
    elm_widget_type_set(obj, "flip");
index 06ce8b2..3b783e8 100644 (file)
@@ -572,6 +572,7 @@ elm_flipselector_add(Evas_Object *parent)
 
    wd = ELM_NEW(Widget_Data);
    e = evas_object_evas_get(parent);
+   if (!e) return NULL;
    obj = elm_widget_add(e);
    wd->self = obj;
    ELM_SET_WIDTYPE(widtype, "flipselector");
index 23a6c15..0e00a12 100644 (file)
@@ -117,6 +117,7 @@ elm_frame_add(Evas_Object *parent)
 
    wd = ELM_NEW(Widget_Data);
    e = evas_object_evas_get(parent);
+   if (!e) return NULL;
    obj = elm_widget_add(e);
    ELM_SET_WIDTYPE(widtype, "frame");
    elm_widget_type_set(obj, "frame");
index e83dcf2..ced8d79 100644 (file)
@@ -1495,6 +1495,7 @@ elm_gengrid_add(Evas_Object *parent)
 
    wd = ELM_NEW(Widget_Data);
    e = evas_object_evas_get(parent);
+   if (!e) return NULL;
    obj = elm_widget_add(e);
    ELM_SET_WIDTYPE(widtype, "gengrid");
    elm_widget_type_set(obj, "gengrid");
index f808b88..684b1fa 100644 (file)
@@ -2301,6 +2301,7 @@ elm_genlist_add(Evas_Object *parent)
      }
    wd = ELM_NEW(Widget_Data);
    e = evas_object_evas_get(parent);
+   if (!e) return NULL;
    obj = elm_widget_add(e);
    ELM_SET_WIDTYPE(widtype, "genlist");
    elm_widget_type_set(obj, "genlist");
index d1d99a6..45d5447 100644 (file)
@@ -484,6 +484,7 @@ elm_hover_add(Evas_Object *parent)
      wd->subs[i].swallow = _directions[i];
 
    e = evas_object_evas_get(parent);
+   if (!e) return NULL;
    obj = elm_widget_add(e);
    ELM_SET_WIDTYPE(widtype, "hover");
    elm_widget_type_set(obj, "hover");
index d2b8ed4..c0fad61 100644 (file)
@@ -190,6 +190,7 @@ elm_icon_add(Evas_Object *parent)
 
    wd = ELM_NEW(Widget_Data);
    e = evas_object_evas_get(parent);
+   if (!e) return NULL;
    obj = elm_widget_add(e);
    ELM_SET_WIDTYPE(widtype, "icon");
    elm_widget_type_set(obj, "icon");
index 00d887f..a71fe11 100644 (file)
@@ -118,6 +118,7 @@ elm_image_add(Evas_Object *parent)
 
    wd = ELM_NEW(Widget_Data);
    e = evas_object_evas_get(parent);
+   if (!e) return NULL;
    obj = elm_widget_add(e);
    ELM_SET_WIDTYPE(widtype, "image");
    elm_widget_type_set(obj, "image");
index af9aed6..c63a2a4 100644 (file)
@@ -497,6 +497,7 @@ elm_index_add(Evas_Object *parent)
 
    wd = ELM_NEW(Widget_Data);
    e = evas_object_evas_get(parent);
+   if (!e) return NULL;
    obj = elm_widget_add(e);
    ELM_SET_WIDTYPE(widtype, "index");
    elm_widget_type_set(obj, "index");
index 295d153..2d53916 100644 (file)
@@ -422,6 +422,7 @@ elm_label_add(Evas_Object *parent)
 
    wd = ELM_NEW(Widget_Data);
    e = evas_object_evas_get(parent);
+   if (!e) return NULL;
    wd->bgcolor = EINA_FALSE;
    wd->bg = evas_object_rectangle_add(e);
    evas_object_color_set(wd->bg, 0, 0, 0, 0);
index 6f2368d..dafc9cb 100644 (file)
@@ -314,6 +314,7 @@ elm_layout_add(Evas_Object *parent)
 
    wd = ELM_NEW(Widget_Data);
    e = evas_object_evas_get(parent);
+   if (!e) return NULL;
    wd->obj = obj = elm_widget_add(e);
    ELM_SET_WIDTYPE(widtype, "layout");
    elm_widget_type_set(obj, "layout");
index a146dfb..19e2a8f 100644 (file)
@@ -1226,6 +1226,7 @@ elm_list_add(Evas_Object *parent)
 
    wd = ELM_NEW(Widget_Data);
    e = evas_object_evas_get(parent);
+   if (!e) return NULL;
    wd->self = obj = elm_widget_add(e);
    ELM_SET_WIDTYPE(widtype, "list");
    elm_widget_type_set(obj, "list");
index b5d7df3..981c4b0 100644 (file)
@@ -1684,6 +1684,7 @@ elm_map_add(Evas_Object *parent)
 
    wd = ELM_NEW(Widget_Data);
    e = evas_object_evas_get(parent);
+   if (!e) return NULL;
    obj = elm_widget_add(e);
    ELM_SET_WIDTYPE(widtype, "map");
    elm_widget_type_set(obj, "map");
index ad1afa2..f1df3d1 100644 (file)
@@ -171,6 +171,7 @@ elm_mapbuf_add(Evas_Object *parent)
 
    wd = ELM_NEW(Widget_Data);
    e = evas_object_evas_get(parent);
+   if (!e) return NULL;
    obj = elm_widget_add(e);
    ELM_SET_WIDTYPE(widtype, "mapbuf");
    elm_widget_type_set(obj, "mapbuf");
index e478aea..06606ab 100644 (file)
@@ -416,6 +416,7 @@ elm_menu_add(Evas_Object *parent)
 
    wd = ELM_NEW(Widget_Data);
    e = evas_object_evas_get(parent);
+   if (!e) return NULL;
    obj = elm_widget_add(e);
    ELM_SET_WIDTYPE(widtype, "menu");
    elm_widget_type_set(obj, "menu");
index 05f7bf7..18c407d 100644 (file)
@@ -328,6 +328,7 @@ elm_notify_add(Evas_Object *parent)
 
    wd = ELM_NEW(Widget_Data);
    e = evas_object_evas_get(parent);
+   if (!e) return NULL;
    obj = elm_widget_add(e);
    ELM_SET_WIDTYPE(widtype, "notify");
    elm_widget_type_set(obj, "notify");
index c147503..2d1ca07 100644 (file)
@@ -246,6 +246,7 @@ elm_pager_add(Evas_Object *parent)
 
    wd = ELM_NEW(Widget_Data);
    e = evas_object_evas_get(parent);
+   if (!e) return NULL;
    obj = elm_widget_add(e);
    ELM_SET_WIDTYPE(widtype, "pager");
    elm_widget_type_set(obj, "pager");
index ffc7317..c6b7a9f 100644 (file)
@@ -243,6 +243,7 @@ elm_panel_add(Evas_Object *parent)
 
    wd = ELM_NEW(Widget_Data);
    evas = evas_object_evas_get(parent);
+   if (!evas) return NULL;
    obj = elm_widget_add(evas);
    ELM_SET_WIDTYPE(widtype, "panel");
    elm_widget_type_set(obj, "panel");
index 3369f45..be82d21 100644 (file)
@@ -203,6 +203,7 @@ elm_panes_add(Evas_Object *parent)
 
    wd = ELM_NEW(Widget_Data);
    e = evas_object_evas_get(parent);
+   if (!e) return NULL;
    obj = elm_widget_add(e);
    ELM_SET_WIDTYPE(widtype, "panes");
    elm_widget_type_set(obj, "panes");
index a543cbe..c69ed79 100644 (file)
@@ -210,6 +210,7 @@ elm_photo_add(Evas_Object *parent)
 
    wd = ELM_NEW(Widget_Data);
    e = evas_object_evas_get(parent);
+   if (!e) return NULL;
    obj = elm_widget_add(e);
    ELM_SET_WIDTYPE(widtype, "photo");
    elm_widget_type_set(obj, "photo");
index 83972b3..868dbf5 100644 (file)
@@ -979,6 +979,7 @@ elm_photocam_add(Evas_Object *parent)
 
    wd = ELM_NEW(Widget_Data);
    e = evas_object_evas_get(parent);
+   if (!e) return NULL;
    obj = elm_widget_add(e);
    ELM_SET_WIDTYPE(widtype, "photocam");
    elm_widget_type_set(obj, "photocam");
index 322086a..b7e112f 100644 (file)
@@ -191,6 +191,7 @@ elm_progressbar_add(Evas_Object *parent)
 
    wd = ELM_NEW(Widget_Data);
    e = evas_object_evas_get(parent);
+   if (!e) return NULL;
    obj = elm_widget_add(e);
    ELM_SET_WIDTYPE(widtype, "progressbar");
    elm_widget_type_set(obj, "progressbar");
index 14a9088..c01572f 100644 (file)
@@ -276,6 +276,7 @@ elm_radio_add(Evas_Object *parent)
 
    wd = ELM_NEW(Widget_Data);
    e = evas_object_evas_get(parent);
+   if (!e) return NULL;
    obj = elm_widget_add(e);
    ELM_SET_WIDTYPE(widtype, "radio");
    elm_widget_type_set(obj, "radio");
index aa56634..c6167fc 100644 (file)
@@ -447,6 +447,7 @@ elm_scroller_add(Evas_Object *parent)
 
    wd = ELM_NEW(Widget_Data);
    e = evas_object_evas_get(parent);
+   if (!e) return NULL;
    obj = elm_widget_add(e);
    ELM_SET_WIDTYPE(widtype, "scroller");
    elm_widget_type_set(obj, "scroller");
index 14b0d0b..6580bd3 100644 (file)
@@ -74,6 +74,7 @@ elm_separator_add(Evas_Object *parent)
 
    wd = ELM_NEW(Widget_Data);
    e = evas_object_evas_get(parent);
+   if (!e) return NULL;
    obj = elm_widget_add(e);
    ELM_SET_WIDTYPE(widtype, "separator");
    wd->horizontal = EINA_FALSE;
index 36bf0f4..df0ad93 100644 (file)
@@ -453,6 +453,7 @@ elm_slider_add(Evas_Object *parent)
 
    wd = ELM_NEW(Widget_Data);
    e = evas_object_evas_get(parent);
+   if (!e) return NULL;
    obj = elm_widget_add(e);
    ELM_SET_WIDTYPE(widtype, "slider");
    elm_widget_type_set(obj, "slider");
index 0910059..1c8ad98 100644 (file)
@@ -296,6 +296,7 @@ elm_slideshow_add(Evas_Object *parent)
 
    wd = ELM_NEW(Widget_Data);
    e = evas_object_evas_get(parent);
+   if (!e) return NULL;
    obj = elm_widget_add(e);
    ELM_SET_WIDTYPE(widtype, "slideshow");
    elm_widget_type_set(obj, "slideshow");
index 6fc84dd..3ce2ea3 100644 (file)
@@ -563,6 +563,7 @@ elm_spinner_add(Evas_Object *parent)
 
    wd = ELM_NEW(Widget_Data);
    e = evas_object_evas_get(parent);
+   if (!e) return NULL;
    obj = elm_widget_add(e);
    ELM_SET_WIDTYPE(widtype, "spinner");
    elm_widget_type_set(obj, "spinner");
index ea5ff66..8e296bc 100644 (file)
@@ -126,6 +126,7 @@ elm_table_add(Evas_Object *parent)
 
    wd = ELM_NEW(Widget_Data);
    e = evas_object_evas_get(parent);
+   if (!e) return NULL;
    obj = elm_widget_add(e);
    ELM_SET_WIDTYPE(widtype, "table");
    elm_widget_type_set(obj, "table");
index bcb06c0..ecda646 100644 (file)
@@ -429,6 +429,7 @@ elm_thumb_add(Evas_Object *parent)
 
    wd = ELM_NEW(Widget_Data);
    evas = evas_object_evas_get(parent);
+   if (!evas) return NULL;
    obj = elm_widget_add(evas);
    ELM_SET_WIDTYPE(widtype, "thumb");
    elm_widget_type_set(obj, "thumb");
index 58d76d2..bfd2857 100644 (file)
@@ -211,6 +211,7 @@ elm_toggle_add(Evas_Object *parent)
 
    wd = ELM_NEW(Widget_Data);
    e = evas_object_evas_get(parent);
+   if (!e) return NULL;
    obj = elm_widget_add(e);
    ELM_SET_WIDTYPE(widtype, "toggle");
    elm_widget_type_set(obj, "toggle");
index efb3ae7..db6d87d 100644 (file)
@@ -676,6 +676,7 @@ elm_toolbar_add(Evas_Object *parent)
 
    wd = ELM_NEW(Widget_Data);
    e = evas_object_evas_get(parent);
+   if (!e) return NULL;
    obj = elm_widget_add(e);
    ELM_SET_WIDTYPE(widtype, "toolbar");
    elm_widget_type_set(obj, "toolbar");
index 37f2688..143967d 100644 (file)
  *    // basic - allocate data for widget and fill it
  *    wd = ELM_NEW(Widget_Data);
  *    e = evas_object_evas_get(parent);
+ *    if (!e) return NULL;
  *    obj = elm_widget_add(e);
  *    // give it a type name and set yp a mywidget type string if needed
  *    ELM_SET_WIDTYPE(widtype, "mywidget");