From 6b2dc3871b95eace5e7ea4a9c9ff0d8998e3efab Mon Sep 17 00:00:00 2001 From: jusung son Date: Thu, 3 Nov 2016 10:30:03 +0900 Subject: [PATCH] Fix defect - memory leak - exception handling - typo Change-Id: I95c1fa2d1de35306ec5d25e4506221cd36cf4611 Signed-off-by: jusung son --- include/data-control-provider.h | 2 +- src/data-control-noti.c | 24 +++++++++++++++--------- src/data-control-provider.c | 7 ++++--- 3 files changed, 20 insertions(+), 13 deletions(-) mode change 100644 => 100755 include/data-control-provider.h diff --git a/include/data-control-provider.h b/include/data-control-provider.h old mode 100644 new mode 100755 index db37221..e7e82db --- a/include/data-control-provider.h +++ b/include/data-control-provider.h @@ -367,7 +367,7 @@ EXPORT_API int datacontrol_provider_remove_data_change_consumer_filter_cb(int ca */ EXPORT_API int datacontrol_provider_foreach_data_change_consumer( datacontrol_h provider, - void *list_cb, + data_control_provider_data_change_consumer_cb list_cb, void *user_data); EXPORT_API int datacontrol_provider_send_bulk_insert_result( diff --git a/src/data-control-noti.c b/src/data-control-noti.c index 424e2c1..7068b07 100755 --- a/src/data-control-noti.c +++ b/src/data-control-noti.c @@ -181,18 +181,24 @@ static void __call_result_callback(int callback_id, int callback_result) if (find_list != NULL) { result_cb_info = (add_callback_result_cb_info_s *)find_list->data; - _create_datacontrol_h(&provider); - _set_provider_id(provider, result_cb_info->provider_id); - _set_data_id(provider, result_cb_info->data_id); - result_cb_info->callback( - (data_control_h)provider, - callback_result, - callback_id, - result_cb_info->user_data); + if (result_cb_info->callback) { + _create_datacontrol_h(&provider); + _set_provider_id(provider, result_cb_info->provider_id); + _set_data_id(provider, result_cb_info->data_id); + + result_cb_info->callback( + (data_control_h)provider, + callback_result, + callback_id, + result_cb_info->user_data); + + _destroy_datacontrol_h(provider); + } else { + LOGE("data_control_add_callback_result_cb is null"); + } __add_callback_result_cb_list = g_list_remove(__add_callback_result_cb_list, find_list->data); __free_result_cb_info(result_cb_info); - _destroy_datacontrol_h(provider); } else { LOGE("add_callback_result_cb_info_s is null"); } diff --git a/src/data-control-provider.c b/src/data-control-provider.c index e340e38..7cf363d 100755 --- a/src/data-control-provider.c +++ b/src/data-control-provider.c @@ -664,6 +664,7 @@ static data_control_bulk_data_h __get_bulk_data_from_fd(int fd) return NULL; } datacontrol_bulk_data_add(ret_bulk_data_h, data); + bundle_free(data); } return ret_bulk_data_h; } @@ -1627,7 +1628,7 @@ static int __provider_noti_process(bundle *b, datacontrol_request_type type) } else { LOGI("empty __consumer_app_list"); } - result = __delete_consumer_list_db_info(path); + result = __delete_consumer_list_db_info(unique_id); if (result != DATACONTROL_ERROR_NONE) { LOGE("__delete_consumer_list_db_info fail %d", result); result = DATACONTROL_ERROR_IO_ERROR; @@ -2133,7 +2134,7 @@ int datacontrol_provider_remove_data_change_consumer_filter_cb(int callback_id) int datacontrol_provider_foreach_data_change_consumer( datacontrol_h provider, - void *list_cb, + data_control_provider_data_change_consumer_cb list_cb, void *user_data) { char *app_id = NULL; @@ -2143,7 +2144,7 @@ int datacontrol_provider_foreach_data_change_consumer( char query[QUERY_MAXLEN]; bool callback_result; data_control_provider_data_change_consumer_cb consumer_list_cb; - consumer_list_cb = (data_control_provider_data_change_consumer_cb)list_cb; + consumer_list_cb = list_cb; sqlite3_snprintf(QUERY_MAXLEN, query, "SELECT app_id, unique_id " \ -- 2.7.4