Fix static analysis issue 27/152527/5
authorJunghoon Park <jh9216.park@samsung.com>
Tue, 26 Sep 2017 08:52:55 +0000 (17:52 +0900)
committerJunghoon Park <jh9216.park@samsung.com>
Tue, 26 Sep 2017 11:28:46 +0000 (20:28 +0900)
- Fix 'resource leak'
- Fix 'Uninitialized scalar variable'
- Fix 'Dereference null return value'

Change-Id: I70231bcc28287b8da2a999f8e0931670af6e464d
Signed-off-by: Junghoon Park <jh9216.park@samsung.com>
src/base/widget_base.c
src/efl_base/widget_app.c

index e43635d..1843061 100644 (file)
@@ -1600,6 +1600,7 @@ EXPORT_API widget_base_class widget_base_class_get_default(void)
        cls.ops.destroy = __class_on_destroy;
        cls.ops.pause = __class_on_pause;
        cls.ops.resume = __class_on_resume;
+       cls.id = NULL;
 
        return cls;
 }
index 640dca2..6197b31 100644 (file)
@@ -51,6 +51,8 @@ struct app_class_cb_info {
        void *user_data;
 };
 
+static GList *__class_data_list;
+
 static int __class_resize(widget_base_instance_h instance_h, int w, int h,
                void *class_data)
 {
@@ -62,6 +64,13 @@ static int __class_resize(widget_base_instance_h instance_h, int w, int h,
        widget_base_class_on_resize(instance_h, w, h);
        data = (struct instance_data *)
                        widget_base_context_get_user_data(instance_h);
+
+       if (!data) {
+               _E("widget_base_context_get_user_data() returns null");
+
+               return -1;
+       }
+
        if (data->win)
                evas_object_resize(data->win, w, h);
        else
@@ -253,6 +262,11 @@ EXPORT_API int widget_app_main(int argc, char **argv,
        cb_info.user_data = user_data;
 
        r = widget_base_init(ops, argc, argv, &cb_info);
+       if (__class_data_list) {
+               g_list_free_full(__class_data_list, free);
+               __class_data_list = NULL;
+       }
+
        widget_base_fini();
 
        return r;
@@ -428,6 +442,7 @@ EXPORT_API widget_class_h widget_app_class_add(widget_class_h widget_class,
                return NULL;
        }
 
+       __class_data_list = g_list_append(__class_data_list, callback_data);
        set_last_result(WIDGET_ERROR_NONE);
 
        return wc;