fix memory leak - e_comp_object_input_rect_get() 69/200869/1
authorjeon <jhyuni.kang@samsung.com>
Tue, 5 Mar 2019 08:07:46 +0000 (17:07 +0900)
committerjeon <jhyuni.kang@samsung.com>
Tue, 5 Mar 2019 08:09:35 +0000 (17:09 +0900)
  - In e_comp_object_input_rect_get() function append data
    to list, but currently there are not free list after usage.
    So free these invalid usage.

Change-Id: I0e856cd3e94668e7decd933f93efe6d170500cad

src/bin/e_client.c
src/bin/e_info_server.c

index 92789877c6187fec9f4716e9f9cae514a971db08..d7fdfc3ca09528ba117f342dbf23968103acca12 100644 (file)
@@ -3010,7 +3010,7 @@ _e_client_visibility_touched_check(E_Client *ec)
    ty = wl_fixed_to_int(e_comp->wl_comp_data->ptr.y);
 
    e_comp_object_input_rect_get(ec->frame, &list);
-   if (!list || (eina_list_count(list) > 0))
+   if (list)
      {
         EINA_LIST_FOREACH(list, l, data)
           {
@@ -3020,15 +3020,17 @@ _e_client_visibility_touched_check(E_Client *ec)
                   return EINA_TRUE;
                }
           }
-        return EINA_FALSE;
+        list = eina_list_free(list);
      }
-
-   e_client_geometry_get(ec, &x, &y, &w, &h);
-
-   if ((tx >= x) && (tx <= x + w) &&
-       (ty >= y) && (ty <= y + h))
+   else
      {
-        return EINA_TRUE;
+        e_client_geometry_get(ec, &x, &y, &w, &h);
+
+        if ((tx >= x) && (tx <= x + w) &&
+            (ty >= y) && (ty <= y + h))
+          {
+             return EINA_TRUE;
+          }
      }
 
    return EINA_FALSE;
index 446a1358f5b2c1cbfa9d62060b0673c8166875fa..6be763d89817be02e7cc7ff69da363cfab2d9cee 100644 (file)
@@ -283,8 +283,11 @@ _msg_ecs_append(Eldbus_Message_Iter *iter, Eina_Bool is_visible)
         _e_info_server_ec_hwc_info_get(ec, &hwc, &pl_zpos);
 
         e_comp_object_input_rect_get(ec->frame, &list_input_region);
-        if (list_input_region && (eina_list_count(list_input_region) > 0))
-          has_input_region = EINA_TRUE;
+        if (list_input_region)
+          {
+             has_input_region = EINA_TRUE;
+             list_input_region = eina_list_free(list_input_region);
+          }
 
         eldbus_message_iter_arguments_append(array_of_ec, "("VALUE_TYPE_FOR_TOPVWINS")", &struct_of_ec);
 
@@ -367,8 +370,11 @@ _msg_clients_append(Eldbus_Message_Iter *iter, Eina_Bool is_visible)
         _e_info_server_ec_hwc_info_get(ec, &hwc, &pl_zpos);
 
         e_comp_object_input_rect_get(o, &list_input_region);
-        if (list_input_region && (eina_list_count(list_input_region) > 0))
-          has_input_region = EINA_TRUE;
+        if (list_input_region)
+          {
+             has_input_region = EINA_TRUE;
+             list_input_region = eina_list_free(list_input_region);
+          }
 
         eldbus_message_iter_arguments_append(array_of_ec, "("VALUE_TYPE_FOR_TOPVWINS")", &struct_of_ec);
 
@@ -1049,7 +1055,7 @@ _get_win_prop_Input_region(const Evas_Object *evas_obj)
    char *str = NULL;
 
    e_comp_object_input_rect_get((Evas_Object *)evas_obj, &list);
-   if (!list || (eina_list_count(list) <= 0))
+   if (!list)
      {
         astrcat_(&str, "No Input Region\n");
         return str;
@@ -1059,12 +1065,12 @@ _get_win_prop_Input_region(const Evas_Object *evas_obj)
      {
         astrcat_(&str, "[(%d, %d) %dx%d]\n", data->x, data->y, data->w, data->h);
      }
-   EINA_LIST_FREE(list, data);
-   list = NULL;
+   list = eina_list_free(list);
 
    return str;
 fail:
    if (str) free(str);
+   if (list) list = eina_list_free(list);
    return NULL;
 }
 
@@ -5866,7 +5872,6 @@ _input_region_msg_clients_append(Eldbus_Message_Iter *iter, Evas_Object *obj, in
 
    e_comp_object_input_rect_get(obj, &list);
    if (!list) return;
-   if (eina_list_count(list) <= 0) return;
 
    eldbus_message_iter_arguments_append(iter, "a(iiii)", &array_of_ec);
 
@@ -5883,8 +5888,7 @@ _input_region_msg_clients_append(Eldbus_Message_Iter *iter, Evas_Object *obj, in
      }
    eldbus_message_iter_container_close(iter, array_of_ec);
 
-   EINA_LIST_FREE(list, data);
-   list = NULL;
+   list = eina_list_free(list);
 }
 
 static Eldbus_Message *