Fixed crash when eldbus_pending_cancel was invoked on broken pointer.
authorTomasz Olszak <t.olszak@samsung.com>
Wed, 29 Jul 2015 07:53:08 +0000 (09:53 +0200)
committerTomasz Olszak <t.olszak@samsung.com>
Wed, 29 Jul 2015 07:54:56 +0000 (09:54 +0200)
This fixes crashes when screen-reader is terminated. Additionally
updated order of init/shutdown function to be stack like.

Change-Id: Ib01033e1b722b19756b143aaf9fd323da4d78768

src/dbus_gesture_adapter.c
src/main.c
src/screen_reader_gestures.c

index 046b467..b39d6af 100644 (file)
@@ -9,7 +9,6 @@
 
 static Eldbus_Connection *conn;
 static Eldbus_Service_Interface *service;
-static Eldbus_Pending *addr_req;
 
 enum _Signals
 {
@@ -83,7 +82,7 @@ void dbus_gesture_adapter_init(void)
         goto fail_msg;
      }
 
-   if (!(addr_req = eldbus_connection_send(session, msg, _on_get_a11y_address, session, -1)))
+   if (!eldbus_connection_send(session, msg, _on_get_a11y_address, session, -1))
      {
         ERROR("Message send failed");
         goto fail_send;
@@ -99,12 +98,10 @@ fail_msg:
 
 void dbus_gesture_adapter_shutdown(void)
 {
-   if (addr_req) eldbus_pending_cancel(addr_req);
    if (service) eldbus_service_object_unregister(service);
    if (conn) eldbus_connection_unref(conn);
 
    conn = NULL;
-   addr_req = NULL;
    service = NULL;
 
    eldbus_shutdown();
index d8ee5cd..c7786be 100644 (file)
@@ -168,7 +168,6 @@ void set_signal_handler()
 
 static int app_create(void *data)
 {
-   eldbus_init();
    elm_init(0, NULL);
 
    logger_init();
@@ -184,15 +183,19 @@ static int app_create(void *data)
 
 static int app_terminate(void *data)
 {
-   screen_reader_terminate_service(data);
+   DEBUG("screen reader terminating");
 
 #ifndef SCREEN_READER_TV
+   DEBUG("terminate navigator");
    navigator_shutdown();
+   DEBUG("terminate gestures");
    screen_reader_gestures_shutdown();
 #endif
-
-   eldbus_shutdown();
+   DEBUG("terminate service");
+   screen_reader_terminate_service(data);
+   DEBUG("terminate logger");
    logger_shutdown();
+   DEBUG("screen reader terminated");
    return 0;
 }
 
index 2b3f062..e57dd88 100644 (file)
@@ -1189,8 +1189,8 @@ void screen_reader_gestures_shutdown(void)
       ecore_event_handler_del(hdlr);
    }
 
-   ecore_x_pointer_ungrab();
    ecore_x_input_touch_devices_ungrab();
+   ecore_x_pointer_ungrab();
    ecore_x_shutdown();
    ecore_shutdown();
    free(_e_mod_config);