Skip to send SERVER_DISCONNECTED error message if handle is not created. 65/206065/2 accepted/tizen/unified/20190603.095156 submit/tizen/20190531.021454
authorJeongmo Yang <jm80.yang@samsung.com>
Tue, 14 May 2019 02:36:55 +0000 (11:36 +0900)
committerJeongmo Yang <jm80.yang@samsung.com>
Tue, 14 May 2019 09:10:55 +0000 (18:10 +0900)
- The error message could not be delivered to application,
  and it will cause crash when it's called in idle state.

[Version] 0.4.24
[Profile] Common
[Issue Type] Bug fix

Change-Id: Ib4681ca43c895e74742a19a57866e2080058f0bc
Signed-off-by: Jeongmo Yang <jm80.yang@samsung.com>
packaging/capi-media-camera.spec
src/camera.c

index 0d54446..182cf1e 100644 (file)
@@ -1,6 +1,6 @@
 Name:       capi-media-camera
 Summary:    A Camera API
-Version:    0.4.23
+Version:    0.4.24
 Release:    0
 Group:      Multimedia/API
 License:    Apache-2.0
index eb1124e..4e34fd3 100644 (file)
@@ -1656,7 +1656,7 @@ IDLE_EVENT_CALLBACK_DONE:
        return FALSE;
 }
 
-static void *_camera_msg_handler_func(gpointer data)
+static gpointer _camera_msg_handler_func(gpointer data)
 {
        int api = 0;
        int type = 0;
@@ -2013,7 +2013,7 @@ static void __camera_process_msg(camera_cb_info_s *cb_info, char *msg, int *tfd)
 }
 
 
-static void *_camera_msg_recv_func(gpointer data)
+static gpointer _camera_msg_recv_func(gpointer data)
 {
        int i = 0;
        int recv_length = 0;
@@ -2058,9 +2058,14 @@ static void *_camera_msg_recv_func(gpointer data)
        if (!cb_info->is_server_connected) {
                char *error_msg = NULL;
 
+               if (cb_info->bufmgr == NULL) {
+                       LOGE("No need to send error(handle is not created)");
+                       return NULL;
+               }
+
                if (cb_info->fd < 0) {
                        LOGE("fd is closed in client side");
-                       goto CB_HANDLER_EXIT;
+                       return NULL;
                }
 
                /* send error msg for server disconnection */
@@ -2071,7 +2076,7 @@ static void *_camera_msg_recv_func(gpointer data)
 
                if (!error_msg) {
                        LOGE("error_msg failed");
-                       goto CB_HANDLER_EXIT;
+                       return NULL;
                }
 
                __camera_add_msg_to_queue(cb_info,
@@ -2087,7 +2092,6 @@ static void *_camera_msg_recv_func(gpointer data)
                LOGE("add error msg for service disconnection done");
        }
 
-CB_HANDLER_EXIT:
        return NULL;
 }