e_input_evdev: free event when the input_event alloc failed 39/319139/1
authorJunseok Kim <juns.kim@samsung.com>
Tue, 15 Oct 2024 08:55:01 +0000 (17:55 +0900)
committerTizen Window System <tizen.windowsystem@gmail.com>
Wed, 16 Oct 2024 05:13:58 +0000 (14:13 +0900)
Change-Id: Ib0e1d3b5f11bdf08ef51cc57a4b722aba633baeb

src/bin/inputmgr/e_input_evdev.c

index 656f1078401669089468af155b4bbfa3009ca91d..edaac6825e898fe4b245272c4592bef11b680cdf 100644 (file)
@@ -1014,7 +1014,7 @@ _device_pointer_motion(E_Input_Evdev *evdev, struct libinput_event_pointer *even
    else
      {
         input_event = E_NEW(E_Input_Event_Info, 1);
-        EINA_SAFETY_ON_NULL_RETURN(input_event);
+        EINA_SAFETY_ON_NULL_GOTO(input_event, err);
         input_event->touch_event = EINA_FALSE;
         input_event->evdev = evdev;
         input_event->ev = ev;
@@ -1024,6 +1024,13 @@ _device_pointer_motion(E_Input_Evdev *evdev, struct libinput_event_pointer *even
 
         ecore_main_loop_thread_safe_call_async(_pointer_touch_ecore_event_add, input_event);
      }
+
+   return;
+
+err:
+   _e_input_event_mouse_move_cb_free(NULL, (void *)ev);
+
+   return;
 }
 
 void
@@ -1066,7 +1073,7 @@ _device_pointer_relative_motion(E_Input_Evdev *evdev, struct libinput_event_poin
      ELOGF("Mouse", "Relative Move (time: %d, dx: %.2f, dy: %.2f, unaccel(%.2f, %.2f) device: %s)", NULL, ev->timestamp, dx[0], dy[0], dx[1], dy[1], device_name);
 
    input_event = E_NEW(E_Input_Event_Info, 1);
-   EINA_SAFETY_ON_NULL_RETURN(input_event);
+   EINA_SAFETY_ON_NULL_GOTO(input_event, err);
    input_event->touch_event = EINA_FALSE;
    input_event->evdev = evdev;
    input_event->ev = ev;
@@ -1075,6 +1082,13 @@ _device_pointer_relative_motion(E_Input_Evdev *evdev, struct libinput_event_poin
    input_event->free_func_data = NULL;
 
    ecore_main_loop_thread_safe_call_async(_pointer_touch_ecore_event_add, input_event);
+
+   return;
+
+err:
+   _e_input_event_mouse_relative_move_cb_free(NULL, (void *)ev);
+
+   return;
 }
 
 static unsigned int
@@ -1380,7 +1394,7 @@ e_input_evdev_handle_button(E_Input_Evdev *evdev, struct libinput_event_pointer
    else
      {
         input_event = E_NEW(E_Input_Event_Info, 1);
-        EINA_SAFETY_ON_NULL_RETURN(input_event);
+        EINA_SAFETY_ON_NULL_GOTO(input_event, err);
         input_event->touch_event =  EINA_FALSE;
         input_event->evdev = evdev;
         input_event->ev = ev;
@@ -1390,6 +1404,13 @@ e_input_evdev_handle_button(E_Input_Evdev *evdev, struct libinput_event_pointer
 
         ecore_main_loop_thread_safe_call_async(_pointer_touch_ecore_event_add, input_event);
      }
+
+   return;
+
+err:
+   _e_input_event_mouse_button_cb_free(NULL, (void *)ev);
+
+   return;
 }
 
 #if !LIBINPUT_HAVE_SCROLL_VALUE_V120
@@ -1532,7 +1553,7 @@ e_input_evdev_handle_axis(E_Input_Evdev *evdev, struct libinput_event_pointer *e
    else
      {
         input_event = E_NEW(E_Input_Event_Info, 1);
-        EINA_SAFETY_ON_NULL_RETURN(input_event);
+        EINA_SAFETY_ON_NULL_GOTO(input_event, err);
         input_event->touch_event =  EINA_FALSE;
         input_event->evdev = evdev;
         input_event->ev = ev;
@@ -1542,6 +1563,13 @@ e_input_evdev_handle_axis(E_Input_Evdev *evdev, struct libinput_event_pointer *e
 
         ecore_main_loop_thread_safe_call_async(_pointer_touch_ecore_event_add, input_event);
      }
+
+   return;
+
+err:
+   _e_input_event_mouse_wheel_cb_free(NULL, (void *)ev);
+
+   return;
 }
 #endif
 
@@ -1692,7 +1720,7 @@ e_input_evdev_handle_axis_v120(E_Input_Evdev *evdev, struct libinput_event_point
    else
      {
         input_event = E_NEW(E_Input_Event_Info, 1);
-        EINA_SAFETY_ON_NULL_RETURN(input_event);
+        EINA_SAFETY_ON_NULL_GOTO(input_event, err);
         input_event->touch_event =  EINA_FALSE;
         input_event->evdev = evdev;
         input_event->ev = ev;
@@ -1702,6 +1730,13 @@ e_input_evdev_handle_axis_v120(E_Input_Evdev *evdev, struct libinput_event_point
 
         ecore_main_loop_thread_safe_call_async(_pointer_touch_ecore_event_add, input_event);
      }
+
+   return;
+
+err:
+   _e_input_event_mouse_wheel_cb_free(NULL, (void *)ev);
+
+   return;
 }
 #endif
 
@@ -1851,7 +1886,7 @@ _input_event_add(E_Input_Evdev *evdev, int event_type, void *ev, ev_free_func fr
    else
      {
         input_event = E_NEW(E_Input_Event_Info, 1);
-        EINA_SAFETY_ON_NULL_RETURN(input_event);
+        EINA_SAFETY_ON_NULL_GOTO(input_event, err);
         input_event->touch_event =  EINA_TRUE;
         input_event->evdev = evdev;
         input_event->event_type = event_type;
@@ -1861,6 +1896,13 @@ _input_event_add(E_Input_Evdev *evdev, int event_type, void *ev, ev_free_func fr
 
         ecore_main_loop_thread_safe_call_async(_pointer_touch_ecore_event_add, input_event);
      }
+
+   return;
+
+err:
+   free_func((void *)free_func_data, (void *)ev);
+
+   return;
 }
 
 static void
@@ -1878,7 +1920,10 @@ _touch_event_pending_flush(E_Input_Evdev *edev)
         else if (ev->type == ECORE_EVENT_MOUSE_BUTTON_CANCEL)
           _input_event_add(edev, ev->type, ev->event, _e_input_event_mouse_button_cb_free, NULL);
         else
-          ELOGF("CRI", "NOT Supported pending event. type:%d", NULL, ev->type);
+          {
+             ELOGF("CRI", "NOT Supported pending event. type:%d", NULL, ev->type);
+             E_FREE(ev->event);
+          }
 
         E_FREE(ev);
      }
@@ -2476,7 +2521,7 @@ e_input_edev_handle_touch_aux_data(E_Input_Evdev *evdev, struct libinput_event_t
      }
 
    input_event = E_NEW(E_Input_Event_Info, 1);
-   EINA_SAFETY_ON_NULL_RETURN(input_event);
+   EINA_SAFETY_ON_NULL_GOTO(input_event, err);
    input_event->touch_event = EINA_TRUE;
    input_event->evdev = evdev;
    input_event->ev = ev;
@@ -2485,6 +2530,13 @@ e_input_edev_handle_touch_aux_data(E_Input_Evdev *evdev, struct libinput_event_t
    input_event->free_func_data = NULL;
 
    ecore_main_loop_thread_safe_call_async(_pointer_touch_ecore_event_add, input_event);
+
+   return;
+
+err:
+   _e_input_aux_data_event_free(NULL, (void *)ev);
+
+   return;
 }
 
 E_Input_Evdev *