Fix some memory leaks, initialize a variable, and add a NULL check
[platform/core/uifw/at-spi2-atk.git] / cspi / spi-registry.c
index d6f9469..74716eb 100644 (file)
@@ -151,7 +151,7 @@ SPI_registerAccessibleKeystrokeListener (AccessibleKeystrokeListener  *listener,
                                         AccessibleKeyEventMask        eventmask,
                                         AccessibleKeyListenerSyncType sync_type)
 {
-  gchar *path = cspi_device_listener_get_path (listener);
+  gchar *path;
   gint                                i;
   GArray *key_set;
   dbus_uint32_t key_events = 0;
@@ -164,6 +164,7 @@ SPI_registerAccessibleKeystrokeListener (AccessibleKeystrokeListener  *listener,
     {
       return retval;
     }
+  path = cspi_device_listener_get_path (listener);
 
   /* copy the keyval filter values from the C api into the DBind KeySet */
   if (keys)
@@ -234,7 +235,7 @@ SPIBoolean
 SPI_deregisterAccessibleKeystrokeListener (AccessibleKeystrokeListener *listener,
                                           AccessibleKeyMaskType        modmask)
 {
-  gchar *path = cspi_device_listener_get_path (listener);
+  gchar *path;
   Accessibility_ControllerEventMask   controller_event_mask;
   GArray *key_set;
   dbus_uint32_t key_events = 0;
@@ -245,6 +246,7 @@ SPI_deregisterAccessibleKeystrokeListener (AccessibleKeystrokeListener *listener
       return FALSE;
     }
 
+  path = cspi_device_listener_get_path (listener);
 
   controller_event_mask = (dbus_uint32_t) modmask;
 
@@ -274,7 +276,7 @@ SPI_registerDeviceEventListener (AccessibleDeviceListener  *listener,
   SPIBoolean                          retval = FALSE;
   dbus_uint32_t event_types = 0;
   gint                                i;
-  gchar *path = cspi_device_listener_get_path (listener);
+  gchar *path;
   DBusError error;
 
   if (!listener)
@@ -282,6 +284,8 @@ SPI_registerDeviceEventListener (AccessibleDeviceListener  *listener,
       return retval;
     }
 
+  path = cspi_device_listener_get_path (listener);
+
   /* copy the event filter values from the C api into the CORBA KeyEventTypeSeq */
   
   if (eventmask & SPI_BUTTON_PRESSED)
@@ -315,7 +319,7 @@ SPI_deregisterDeviceEventListener (AccessibleDeviceListener *listener,
                                   void                     *filter)
 {
   dbus_uint32_t event_types = 0;
-  gchar *path = cspi_device_listener_get_path (listener);
+  gchar *path;
   DBusError error;
 
   if (!listener)
@@ -323,6 +327,8 @@ SPI_deregisterDeviceEventListener (AccessibleDeviceListener *listener,
       return FALSE;
     }
 
+  path = cspi_device_listener_get_path (listener);
+
   event_types |= (1 << Accessibility_BUTTON_PRESSED_EVENT);
   event_types |= (1 << Accessibility_BUTTON_RELEASED_EVENT);