Fix memory leak issue 81/106481/4
authorLisa kim <hj0530.kim@samsung.com>
Thu, 22 Dec 2016 00:44:38 +0000 (09:44 +0900)
committerLisa kim <hj0530.kim@samsung.com>
Thu, 22 Dec 2016 04:16:11 +0000 (13:16 +0900)
Change-Id: Id4b6075dc461b8eaef962bbf1dac64dc736ab22b
Signed-off-by: Lisa kim <hj0530.kim@samsung.com>
src/e_mod_keyrouter_events.c
src/e_mod_main_wl.c

index 4148011..ad68f87 100644 (file)
@@ -129,7 +129,7 @@ static Eina_Bool
 _e_keyrouter_send_key_events_release(int type, Ecore_Event_Key *ev)
 {
    int pid = 0;
-   char *pname = NULL;
+   char *pname = NULL, *cmd = NULL;
    E_Keyrouter_Key_List_NodePtr key_node_data;
    Eina_Bool res = EINA_TRUE, ret = EINA_TRUE;
 
@@ -142,12 +142,14 @@ _e_keyrouter_send_key_events_release(int type, Ecore_Event_Key *ev)
                                                key_node_data->focused, TIZEN_KEYROUTER_MODE_PRESSED);
 
              pid = e_keyrouter_util_get_pid(key_node_data->wc, key_node_data->surface);
-             pname = e_keyrouter_util_process_name_get_from_cmd(e_keyrouter_util_cmd_get_from_pid(pid));
+             cmd = e_keyrouter_util_cmd_get_from_pid(pid);
+             pname = e_keyrouter_util_process_name_get_from_cmd(cmd);
              KLINF("Release Pair : %s(%s:%d)(Focus: %d) => wl_surface (%p) wl_client (%p) (pid: %d) (pname: %s)",
                       ((ECORE_EVENT_KEY_DOWN == type) ? "Down" : "Up"), ev->keyname, ev->keycode, key_node_data->focused,
-                      key_node_data->surface, key_node_data->wc, pid, pname);
+                      key_node_data->surface, key_node_data->wc, pid, pname ?: "Unknown");
 
-             E_FREE(pname);
+             if(pname) E_FREE(pname);
+             if(cmd) E_FREE(cmd);
           }
         E_FREE(key_node_data);
         if (res == EINA_FALSE) ret = EINA_FALSE;
@@ -167,7 +169,7 @@ _e_keyrouter_send_key_events_press(int type, Ecore_Event_Key *ev)
    struct wl_resource *delivered_surface = NULL;
    Eina_Bool res = EINA_TRUE;
    int pid = 0;
-   char *pname = NULL;
+   char *pname = NULL, *cmd = NULL;
 
    E_Keyrouter_Key_List_NodePtr key_node_data;
    Eina_List *l = NULL;
@@ -184,10 +186,12 @@ _e_keyrouter_send_key_events_press(int type, Ecore_Event_Key *ev)
                  res = _e_keyrouter_send_key_event(type, key_node_data->surface, key_node_data->wc, ev, key_node_data->focused, TIZEN_KEYROUTER_MODE_SHARED);
 
                  pid = e_keyrouter_util_get_pid(key_node_data->wc, key_node_data->surface);
-                 pname = e_keyrouter_util_process_name_get_from_cmd(e_keyrouter_util_cmd_get_from_pid(pid));
+                 cmd = e_keyrouter_util_cmd_get_from_pid(pid);
+                 pname = e_keyrouter_util_process_name_get_from_cmd(cmd);
                  KLINF("PICTURE OFF : %s(%d) => wl_surface (%p) wl_client (%p) (pid: %d) (pname: %s)",
-                       ((ECORE_EVENT_KEY_DOWN == type) ? "Down" : "Up"), ev->keycode, key_node_data->surface, key_node_data->wc, pid, pname);
-                 E_FREE(pname);
+                       ((ECORE_EVENT_KEY_DOWN == type) ? "Down" : "Up"), ev->keycode, key_node_data->surface, key_node_data->wc, pid, pname ?: "Unknown");
+                 if(pname) E_FREE(pname);
+                 if(cmd) E_FREE(cmd);
                 }
           }
        return res;
@@ -214,12 +218,13 @@ _e_keyrouter_send_key_events_press(int type, Ecore_Event_Key *ev)
                                                key_node_data->focused, TIZEN_KEYROUTER_MODE_EXCLUSIVE);
 
              pid = e_keyrouter_util_get_pid(key_node_data->wc, key_node_data->surface);
-             pname = e_keyrouter_util_process_name_get_from_cmd(e_keyrouter_util_cmd_get_from_pid(pid));
+             cmd = e_keyrouter_util_cmd_get_from_pid(pid);
+             pname = e_keyrouter_util_process_name_get_from_cmd(cmd);
              KLINF("EXCLUSIVE : %s(%s:%d) => wl_surface (%p) wl_client (%p) (pid: %d) (pname: %s)",
                       ((ECORE_EVENT_KEY_DOWN == type) ? "Down" : "Up"), ev->keyname, ev->keycode,
-                      key_node_data->surface, key_node_data->wc, pid, pname);
-             E_FREE(pname);
-
+                      key_node_data->surface, key_node_data->wc, pid, pname ?: "Unknown");
+             if(pname) E_FREE(pname);
+             if(cmd) E_FREE(cmd);
              return res;
           }
      }
@@ -232,11 +237,13 @@ _e_keyrouter_send_key_events_press(int type, Ecore_Event_Key *ev)
                                                key_node_data->focused, TIZEN_KEYROUTER_MODE_OVERRIDABLE_EXCLUSIVE);
 
              pid = e_keyrouter_util_get_pid(key_node_data->wc, key_node_data->surface);
-             pname = e_keyrouter_util_process_name_get_from_cmd(e_keyrouter_util_cmd_get_from_pid(pid));
+             cmd = e_keyrouter_util_cmd_get_from_pid(pid);
+             pname = e_keyrouter_util_process_name_get_from_cmd(cmd);
              KLINF("OVERRIDABLE_EXCLUSIVE : %s(%s:%d) => wl_surface (%p) wl_client (%p) (pid: %d) (pname: %s)",
                      ((ECORE_EVENT_KEY_DOWN == type) ? "Down" : "Up"), ev->keyname, ev->keycode,
-                     key_node_data->surface, key_node_data->wc, pid, pname);
-             E_FREE(pname);
+                     key_node_data->surface, key_node_data->wc, pid, pname ?: "Unknown");
+             if(pname) E_FREE(pname);
+             if(cmd) E_FREE(cmd);
 
              return res;
           }
@@ -252,15 +259,17 @@ _e_keyrouter_send_key_events_press(int type, Ecore_Event_Key *ev)
                   if ((EINA_FALSE == krt->isWindowStackChanged) && (surface_focus == key_node_data->surface))
                     {
                        pid = e_keyrouter_util_get_pid(key_node_data->wc, key_node_data->surface);
-                       pname = e_keyrouter_util_process_name_get_from_cmd(e_keyrouter_util_cmd_get_from_pid(pid));
+                       cmd = e_keyrouter_util_cmd_get_from_pid(pid);
+                       pname = e_keyrouter_util_process_name_get_from_cmd(cmd);
 
                        res = _e_keyrouter_send_key_event(type, key_node_data->surface, NULL, ev, key_node_data->focused,
                                                          TIZEN_KEYROUTER_MODE_TOPMOST);
                        KLINF("TOPMOST (TOP_POSITION) : %s (%s:%d) => wl_surface (%p) (pid: %d) (pname: %s)",
                                 ((ECORE_EVENT_KEY_DOWN == type) ? "Down" : "Up"), ev->keyname, ev->keycode,
-                                key_node_data->surface, pid, pname);
+                                key_node_data->surface, pid, pname ?: "Unknown");
 
-                       E_FREE(pname);
+                       if(pname) E_FREE(pname);
+                       if(cmd) E_FREE(cmd);
                        return res;
                     }
                   krt->isWindowStackChanged = EINA_FALSE;
@@ -269,15 +278,17 @@ _e_keyrouter_send_key_events_press(int type, Ecore_Event_Key *ev)
                     {
                        E_Keyrouter_Key_List_NodePtr top_key_node_data = eina_list_data_get(krt->HardKeys[keycode].top_ptr);
                        pid = e_keyrouter_util_get_pid(top_key_node_data->wc, top_key_node_data->surface);
-                       pname = e_keyrouter_util_process_name_get_from_cmd(e_keyrouter_util_cmd_get_from_pid(pid));
+                       cmd = e_keyrouter_util_cmd_get_from_pid(pid);
+                       pname = e_keyrouter_util_process_name_get_from_cmd(cmd);
 
                        res = _e_keyrouter_send_key_event(type, top_key_node_data->surface, NULL, ev, top_key_node_data->focused,
                                                          TIZEN_KEYROUTER_MODE_TOPMOST);
                        KLINF("TOPMOST (TOP_POSITION) : %s (%s:%d) => wl_surface (%p) (pid: %d) (pname: %s)",
                              ((ECORE_EVENT_KEY_DOWN == type) ? "Down" : "Up"), ev->keyname, ev->keycode,
-                             top_key_node_data->surface, pid, pname);
+                             top_key_node_data->surface, pid, pname ?: "Unknown");
 
-                       E_FREE(pname);
+                       if(pname) E_FREE(pname);
+                       if(cmd) E_FREE(cmd);
                        return res;
                     }
                   break;
@@ -312,10 +323,12 @@ need_shared:
                     {
                        _e_keyrouter_send_key_event(type, key_node_data->surface, key_node_data->wc, ev, key_node_data->focused, TIZEN_KEYROUTER_MODE_SHARED);
                        pid = e_keyrouter_util_get_pid(key_node_data->wc, key_node_data->surface);
-                       pname = e_keyrouter_util_process_name_get_from_cmd(e_keyrouter_util_cmd_get_from_pid(pid));
+                       cmd = e_keyrouter_util_cmd_get_from_pid(pid);
+                       pname = e_keyrouter_util_process_name_get_from_cmd(cmd);
                        KLINF("SHARED : %s(%s:%d) => wl_surface (%p) wl_client (%p) (pid: %d) (pname: %s)",
-                             ((ECORE_EVENT_KEY_DOWN == type) ? "Down" : "Up"), ev->keyname, ev->keycode, key_node_data->surface, key_node_data->wc, pid, pname);
-                       E_FREE(pname);
+                             ((ECORE_EVENT_KEY_DOWN == type) ? "Down" : "Up"), ev->keyname, ev->keycode, key_node_data->surface, key_node_data->wc, pid, pname ?: "Unknown");
+                       if(pname) E_FREE(pname);
+                       if(cmd) E_FREE(cmd);
                     }
                }
           }
@@ -337,7 +350,7 @@ _e_keyrouter_send_key_events_focus(int type, struct wl_resource *surface_focus,
    int deliver_invisible = 0;
    Eina_Bool res = EINA_TRUE;
    int pid = 0;
-   char *pname = NULL;
+   char *pname = NULL, *cmd = NULL;
 
    ec_top = e_client_top_get();
    ec_focus = e_client_focused_get();
@@ -346,13 +359,15 @@ _e_keyrouter_send_key_events_focus(int type, struct wl_resource *surface_focus,
          !IsNoneKeyRegisterWindow(surface_focus) && !krt->invisible_set_window_list)
      {
         pid = e_keyrouter_util_get_pid(NULL, surface_focus);
-        pname = e_keyrouter_util_process_name_get_from_cmd(e_keyrouter_util_cmd_get_from_pid(pid));
+        cmd = e_keyrouter_util_cmd_get_from_pid(pid);
+        pname = e_keyrouter_util_process_name_get_from_cmd(cmd);
 
         res = _e_keyrouter_send_key_event(type, surface_focus, NULL,ev, EINA_TRUE, TIZEN_KEYROUTER_MODE_SHARED);
         KLINF("FOCUS DIRECT : %s(%s:%d) => wl_surface (%p) (pid: %d) (pname: %s)",
-               ((ECORE_EVENT_KEY_DOWN == type) ? "Down" : "Up"), ev->keyname, ev->keycode, surface_focus, pid, pname);
+               ((ECORE_EVENT_KEY_DOWN == type) ? "Down" : "Up"), ev->keyname, ev->keycode, surface_focus, pid, pname ?: "Unknown");
         *delivered_surface = surface_focus;
-        E_FREE(pname);
+        if(pname) E_FREE(pname);
+        if(cmd) E_FREE(cmd);
         return res;
      }
 
@@ -379,14 +394,16 @@ _e_keyrouter_send_key_events_focus(int type, struct wl_resource *surface_focus,
         if (deliver_invisible && IsInvisibleGetWindow(surface))
           {
              pid = e_keyrouter_util_get_pid(NULL, surface);
-             pname = e_keyrouter_util_process_name_get_from_cmd(e_keyrouter_util_cmd_get_from_pid(pid));
+             cmd = e_keyrouter_util_cmd_get_from_pid(pid);
+             pname = e_keyrouter_util_process_name_get_from_cmd(cmd);
 
              res = _e_keyrouter_send_key_event(type, surface, NULL, ev, EINA_TRUE, TIZEN_KEYROUTER_MODE_REGISTERED);
              KLINF("FORCE DELIVER : %s(%s:%d) => wl_surface (%p) (pid: %d) (pname: %s)",
                    ((ECORE_EVENT_KEY_DOWN == type) ? "Down" : "Up"), ev->keyname, ev->keycode,
-                   surface, pid, pname);
+                   surface, pid, pname ?: "Unknown");
              *delivered_surface = surface;
-             E_FREE(pname);
+             if(pname) E_FREE(pname);
+             if(cmd) E_FREE(cmd);
              return res;
           }
 
@@ -425,14 +442,16 @@ _e_keyrouter_send_key_events_focus(int type, struct wl_resource *surface_focus,
                        if(*key_data == ev->keycode)
                          {
                             pid = e_keyrouter_util_get_pid(NULL, surface);
-                            pname = e_keyrouter_util_process_name_get_from_cmd(e_keyrouter_util_cmd_get_from_pid(pid));
+                            cmd = e_keyrouter_util_cmd_get_from_pid(pid);
+                            pname = e_keyrouter_util_process_name_get_from_cmd(cmd);
 
                             res = _e_keyrouter_send_key_event(type, surface, NULL, ev, EINA_TRUE, TIZEN_KEYROUTER_MODE_REGISTERED);
                             KLINF("REGISTER : %s(%s:%d) => wl_surface (%p) (pid: %d) (pname: %s)",
-                                  ((ECORE_EVENT_KEY_DOWN == type) ? "Down" : "Up"), ev->keyname, ev->keycode, surface, pid, pname);
+                                  ((ECORE_EVENT_KEY_DOWN == type) ? "Down" : "Up"), ev->keyname, ev->keycode, surface, pid, pname ?: "Unknown");
                             *delivered_surface = surface;
                             krt->isRegisterDelivery = EINA_TRUE;
-                            E_FREE(pname);
+                            if(pname) E_FREE(pname);
+                            if(cmd) E_FREE(cmd);
                             return res;
                          }
                     }
@@ -451,13 +470,15 @@ _e_keyrouter_send_key_events_focus(int type, struct wl_resource *surface_focus,
              else if (!e_keyrouter_is_registered_window(surface))
                {
                   pid = e_keyrouter_util_get_pid(NULL, surface);
-                  pname = e_keyrouter_util_process_name_get_from_cmd(e_keyrouter_util_cmd_get_from_pid(pid));
+                  cmd = e_keyrouter_util_cmd_get_from_pid(pid);
+                  pname = e_keyrouter_util_process_name_get_from_cmd(cmd);
 
                   res = _e_keyrouter_send_key_event(type, surface, NULL, ev, EINA_TRUE, TIZEN_KEYROUTER_MODE_SHARED);
                   KLINF("NOT REGISTER : %s(%s:%d) => wl_surface (%p) (pid: %d) (pname: %s)",
-                        ((ECORE_EVENT_KEY_DOWN == type) ? "Down" : "Up"), ev->keyname, ev->keycode, surface, pid, pname);
+                        ((ECORE_EVENT_KEY_DOWN == type) ? "Down" : "Up"), ev->keyname, ev->keycode, surface, pid, pname ?: "Unknown");
                   *delivered_surface = surface;
-                  E_FREE(pname);
+                  if(pname) E_FREE(pname);
+                  if(cmd) E_FREE(cmd);
                   return res;
                }
              else continue;
@@ -468,13 +489,15 @@ _e_keyrouter_send_key_events_focus(int type, struct wl_resource *surface_focus,
              if (!e_keyrouter_is_registered_window(surface))
                {
                   pid = e_keyrouter_util_get_pid(NULL, surface);
-                  pname = e_keyrouter_util_process_name_get_from_cmd(e_keyrouter_util_cmd_get_from_pid(pid));
+                  cmd = e_keyrouter_util_cmd_get_from_pid(pid);
+                  pname = e_keyrouter_util_process_name_get_from_cmd(cmd);
 
                   res = _e_keyrouter_send_key_event(type, surface, NULL,ev, EINA_TRUE, TIZEN_KEYROUTER_MODE_SHARED);
                   KLINF("FOCUS : %s(%s:%d) => wl_surface (%p) (pid: %d) (pname: %s)",
-                        ((ECORE_EVENT_KEY_DOWN == type) ? "Down" : "Up"), ev->keyname, ev->keycode, surface, pid, pname);
+                        ((ECORE_EVENT_KEY_DOWN == type) ? "Down" : "Up"), ev->keyname, ev->keycode, surface, pid, pname ?: "Unknown");
                   *delivered_surface = surface;
-                  E_FREE(pname);
+                  if(pname) E_FREE(pname);
+                  if(cmd) E_FREE(cmd);
                   return res;
                }
              else continue;
index 5f9f421..815f435 100644 (file)
@@ -686,7 +686,8 @@ _e_keyrouter_keygrab_status_print(FILE *log_fl, Eina_List *list)
      {
         pid = e_keyrouter_util_get_pid(kdata->wc, kdata->surface);
         cmd = e_keyrouter_util_cmd_get_from_pid(pid);
-        fprintf(log_fl, "                [surface: %p, client: %p, pid: %d(%s)]\n", kdata->surface, kdata->wc, pid, cmd);
+        fprintf(log_fl, "                [surface: %p, client: %p, pid: %d(%s)]\n", kdata->surface, kdata->wc, pid, cmd ?: "Unknown");
+        if(cmd) E_FREE(cmd);
         if (kdata->surface)
           {
              fprintf(log_fl, "                    -- Surface Information --\n");
@@ -741,9 +742,8 @@ _e_keyrouter_info_print(void *data, const char *log_path)
         pid = e_keyrouter_util_get_pid(NULL, rdata->surface);
         cmd = e_keyrouter_util_cmd_get_from_pid(pid);
         fprintf(log_fl, "        [ surface: %p, client: %p, pid: %d(%s) ]\n",
-                         rdata->surface, wl_resource_get_client(rdata->surface), pid, cmd);
-        free(cmd);
-        cmd = NULL;
+                         rdata->surface, wl_resource_get_client(rdata->surface), pid, cmd ?: "Unknown");
+        if(cmd) E_FREE(cmd);
         c = 0;
         EINA_LIST_FOREACH(rdata->keys, ll, idata)
           {
@@ -799,8 +799,8 @@ _e_keyrouter_keygrab_print(void *data, const char *log_path)
 
         fprintf(log_fl, "        Focus Client: E_Client: %p\n", ec_focus);
         fprintf(log_fl, "                      Surface: %p, Client: %p\n", surface_focus, wc_focus);
-        fprintf(log_fl, "                      pid: %d, cmd: %s\n", pid_focus, cmd_focus);
-        free(cmd_focus);
+        fprintf(log_fl, "                      pid: %d, cmd: %s\n", pid_focus, cmd_focus ?: "Unknown");
+        if(cmd_focus) E_FREE(cmd_focus);
      }
    else
      {
@@ -833,9 +833,8 @@ _e_keyrouter_keygrab_print(void *data, const char *log_path)
                {
                   pid = e_keyrouter_util_get_pid(kdata->wc, kdata->surface);
                   cmd = e_keyrouter_util_cmd_get_from_pid(pid);
-                  fprintf(log_fl, "                [surface: %p, client: %p, pid: %d(%s)]\n", kdata->surface, kdata->wc, pid, cmd);
-                  free(cmd);
-                  cmd = NULL;
+                  fprintf(log_fl, "                [surface: %p, client: %p, pid: %d(%s)]\n", kdata->surface, kdata->wc, pid, cmd ?: "Unknown");
+                  if(cmd) E_FREE(cmd);
                   if (kdata->surface)
                     {
                        fprintf(log_fl, "                    -- Surface Information --\n");