efl_ui_widget_common: Fix potential resource leak
authorChristopher Michael <cp.michael@samsung.com>
Tue, 12 Mar 2019 14:18:17 +0000 (10:18 -0400)
committerYeongjong Lee <yj34.lee@samsung.com>
Tue, 2 Apr 2019 03:45:17 +0000 (12:45 +0900)
Coverity reports that we potentially leak the storage of
'tree_iterator' here because we allocate the space for it, but
potentially juse return due to use of ELM_WIDGET_DATA_GET_OR_RETURN.
To fix this, just move the allocation to after the above macro is
called.

Fixes Coverity CID1399088

@fix

Reviewed-by: Stefan Schmidt <stefan@datenfreihafen.org>
Reviewed-by: Marcel Hollerbach <mail@marcel-hollerbach.de>
Differential Revision: https://phab.enlightenment.org/D8314

src/lib/elementary/efl_ui_widget_common.c

index 519efe21bfbb26a6085b39000c408606bbb92384..c83fd07c923ecfcb463fd4620b64e6e22fead8ab 100644 (file)
@@ -139,8 +139,8 @@ _only_widget(const void *container EINA_UNUSED, void *data, void *fdata EINA_UNU
 EAPI Eina_Iterator*
 efl_ui_widget_tree_widget_iterator(Efl_Ui_Widget *obj)
 {
-   Eina_Iterator *tree_iterator = efl_ui_widget_tree_iterator(obj);
    ELM_WIDGET_DATA_GET_OR_RETURN(obj, pd, NULL);
+   Eina_Iterator *tree_iterator = efl_ui_widget_tree_iterator(obj);
 
    return eina_iterator_filter_new(tree_iterator, _only_widget, NULL, NULL);
 }