diff options
author | Hwankyu Jhun <h.jhun@samsung.com> | 2015-11-03 16:42:22 +0900 |
---|---|---|
committer | Hwankyu Jhun <h.jhun@samsung.com> | 2015-11-03 16:51:00 +0900 |
commit | c935b4b48f0be70c2650143ae5ac4268e028f368 (patch) | |
tree | 34223cd937a104801c7c846cbe7f51d397150e38 | |
parent | 134e7467c5b2bc3a3611b35458c3c55dffb08d60 (diff) | |
download | appcore-agent-c935b4b48f0be70c2650143ae5ac4268e028f368.tar.gz appcore-agent-c935b4b48f0be70c2650143ae5ac4268e028f368.tar.bz2 appcore-agent-c935b4b48f0be70c2650143ae5ac4268e028f368.zip |
Fix prevent issue and remove compile warning messagessubmit/tizen_ivi/20160217.000002submit/tizen_ivi/20160217.000000submit/tizen_common/20151229.154718submit/tizen_common/20151229.144031submit/tizen_common/20151229.142028submit/tizen/20151103.105216accepted/tizen/wearable/20151103.225055accepted/tizen/tv/20151103.225044accepted/tizen/mobile/20151103.225030accepted/tizen/ivi/20160218.023409
- Fix double free
Change-Id: Icb6064f8d29fe9004f23fb118c96acd1c4743eb3
Signed-off-by: Hwankyu Jhun <h.jhun@samsung.com>
-rw-r--r-- | include/service_app.h | 3 | ||||
-rw-r--r-- | src/appcore-agent.c | 44 | ||||
-rw-r--r-- | src/service_app_error.c | 15 | ||||
-rw-r--r-- | src/service_app_main.c | 68 |
4 files changed, 29 insertions, 101 deletions
diff --git a/include/service_app.h b/include/service_app.h index ac11273..55ed3d7 100644 --- a/include/service_app.h +++ b/include/service_app.h @@ -84,8 +84,7 @@ typedef void (*service_app_control_cb) (app_control_h app_control, void *user_da * @see service_app_terminate_cb() * @see service_app_control_cb() */ -typedef struct -{ +typedef struct { service_app_create_cb create; /**< This callback function is called at the start of the application. */ service_app_terminate_cb terminate; /**< This callback function is called once after the main loop of the application exits. */ service_app_control_cb app_control; /**< This callback function is called when another application sends the launch request to the application. */ diff --git a/src/appcore-agent.c b/src/appcore-agent.c index 50f6d36..4848a2f 100644 --- a/src/appcore-agent.c +++ b/src/appcore-agent.c @@ -248,7 +248,6 @@ static void __exit_loop(void *data) static void __do_app(enum agent_event event, void *data, bundle * b) { - int r = 0; struct agent_priv *svc = data; app_control_h app_control = NULL; @@ -263,20 +262,18 @@ static void __do_app(enum agent_event event, void *data, bundle * b) _ret_if(svc->ops == NULL); if (app_control_create_event(b, &app_control) != 0) - { return; - } switch (event) { case AGE_REQUEST: if (svc->ops->app_control) - r = svc->ops->app_control(app_control, svc->ops->data); + svc->ops->app_control(app_control, svc->ops->data); svc->state = AGS_RUNNING; break; /* case AGE_STOP: if(svc->state == AGS_RUNNING) { if (svc->ops->stop) - r = svc->ops->stop(svc->ops->data); + svc->ops->stop(svc->ops->data); svc->state = AGS_STOPED; } break; @@ -412,9 +409,8 @@ static int __sys_langchg_pre(void *data, void *evt) r = setlocale(LC_ALL, lang); if (r == NULL) { r = setlocale(LC_ALL, lang); - if (r) { + if (r) _DBG("*****appcore-agent setlocale=%s\n", r); - } } } @@ -452,9 +448,8 @@ static int __sys_regionchg_pre(void *data, void *evt) setenv("LC_IDENTIFICATION", region, 1); r = setlocale(LC_ALL, ""); - if (r != NULL) { + if (r != NULL) _DBG("*****appcore-agent setlocale=%s\n", r); - } } return 0; @@ -590,21 +585,19 @@ static int __del_vconf_list(void) static int __aul_handler(aul_type type, bundle *b, void *data) { - int ret; - switch (type) { case AUL_START: - ret = __agent_request(data, b); + __agent_request(data, b); break; case AUL_RESUME: break; /* case AUL_STOP: - ret = __service_stop(data); + __service_stop(data); break; */ case AUL_TERMINATE: case AUL_TERMINATE_BGAPP: - ret = __agent_terminate(data); + __agent_terminate(data); break; default: /* do nothing */ @@ -685,7 +678,7 @@ EXPORT_API int appcore_agent_init(const struct agent_ops *ops, int argc, char **argv) { int r; - char *dirname; + const char *dirname; char *app_name = NULL; int pid; @@ -712,22 +705,20 @@ EXPORT_API int appcore_agent_init(const struct agent_ops *ops, _retv_if(r == -1, -1); r = aul_launch_init(__aul_handler, &core); - if (r < 0) { + if (r < 0) goto err; - } r = aul_launch_argv_handler(argc, argv); - if (r < 0) { + if (r < 0) goto err; - } core.ops = ops; - core.state = 1; /* TODO: use enum value */ + core.state = 1; /* TODO: use enum value */ return 0; err: __del_vconf_list(); - //__clear(&core); + return -1; } @@ -749,7 +740,6 @@ static int __before_loop(struct agent_priv *agent, int argc, char **argv) if (agent->ops && agent->ops->create) { r = agent->ops->create(agent->ops->data); if (r < 0) { - //appcore_exit(); if (agent->ops && agent->ops->terminate) agent->ops->terminate(agent->ops->data); errno = ECANCELED; @@ -774,16 +764,16 @@ EXPORT_API int appcore_agent_terminate() { __del_vconf_list(); ecore_main_loop_thread_safe_call_sync((Ecore_Data_Cb)__exit_loop, NULL); + return 0; } EXPORT_API int appcore_agent_terminate_without_restart() { - int ret; - __del_vconf_list(); aul_status_update(STATUS_NORESTART); ecore_main_loop_thread_safe_call_sync((Ecore_Data_Cb)__exit_loop, NULL); + return 0; } @@ -796,10 +786,8 @@ EXPORT_API int appcore_agent_main(int argc, char **argv, _retv_if(r == -1, -1); r = __before_loop(&priv, argc, argv); - if (r == -1) { - //__unset_data(&priv); + if (r == -1) return -1; - } ecore_main_loop_begin(); @@ -807,7 +795,5 @@ EXPORT_API int appcore_agent_main(int argc, char **argv, __after_loop(&priv); - //__unset_data(&priv); - return 0; } diff --git a/src/service_app_error.c b/src/service_app_error.c index b2f7c26..814808c 100644 --- a/src/service_app_error.c +++ b/src/service_app_error.c @@ -31,27 +31,20 @@ static const char* service_app_error_to_string(app_error_e error) { - switch (error) - { + switch (error) { case APP_ERROR_NONE: return "NONE"; - case APP_ERROR_INVALID_PARAMETER: return "INVALID_PARAMETER"; - case APP_ERROR_OUT_OF_MEMORY: return "OUT_OF_MEMORY"; - case APP_ERROR_INVALID_CONTEXT: return "INVALID_CONTEXT"; - case APP_ERROR_NO_SUCH_FILE: return "NO_SUCH_FILE"; - case APP_ERROR_ALREADY_RUNNING: return "ALREADY_RUNNING"; - - default : + default: return "UNKNOWN"; } } @@ -59,13 +52,9 @@ static const char* service_app_error_to_string(app_error_e error) int service_app_error(app_error_e error, const char* function, const char *description) { if (description) - { LOGE("[%s] %s(0x%08x) : %s", function, service_app_error_to_string(error), error, description); - } else - { LOGE("[%s] %s(0x%08x)", function, service_app_error_to_string(error), error); - } return error; } diff --git a/src/service_app_main.c b/src/service_app_main.c index 3155a5f..a8704f7 100644 --- a/src/service_app_main.c +++ b/src/service_app_main.c @@ -16,22 +16,18 @@ #include <stdlib.h> - +#include <unistd.h> #include <bundle.h> #include <aul.h> #include <dlog.h> #include <vconf-internal-keys.h> #include <app_common.h> - #include <Eina.h> - #include <appcore-agent.h> + #include "service_app_private.h" #include "service_app_extension.h" -#include <unistd.h> - - #ifdef LOG_TAG #undef LOG_TAG #endif @@ -40,13 +36,12 @@ #define TIZEN_PATH_MAX 1024 #endif - #define LOG_TAG "CAPI_APPFW_APPLICATION" typedef enum { - SERVICE_APP_STATE_NOT_RUNNING, // The application has been launched or was running but was terminated - SERVICE_APP_STATE_CREATING, // The application is initializing the resources on service_app_create_cb callback - SERVICE_APP_STATE_RUNNING, // The application is running in the foreground and background + SERVICE_APP_STATE_NOT_RUNNING, /* The application has been launched or was running but was terminated */ + SERVICE_APP_STATE_CREATING, /* The application is initializing the resources on service_app_create_cb callback */ + SERVICE_APP_STATE_RUNNING, /* The application is running in the foreground and background */ } service_app_state_e; static int _service_app_get_id(char **id) @@ -55,30 +50,20 @@ static int _service_app_get_id(char **id) int ret = -1; if (id == NULL) - { return service_app_error(APP_ERROR_INVALID_PARAMETER, __FUNCTION__, NULL); - } - if (id_buf[0] == '\0') - { + if (id_buf[0] == '\0') { ret = aul_app_get_appid_bypid(getpid(), id_buf, sizeof(id_buf)); - - if (ret < 0) { + if (ret < 0) return service_app_error(APP_ERROR_INVALID_CONTEXT, __FUNCTION__, "failed to get the application ID"); - } } if (id_buf[0] == '\0') - { return service_app_error(APP_ERROR_INVALID_CONTEXT, __FUNCTION__, "failed to get the application ID"); - } *id = strdup(id_buf); - if (*id == NULL) - { return service_app_error(APP_ERROR_OUT_OF_MEMORY, __FUNCTION__, NULL); - } return APP_ERROR_NONE; } @@ -88,26 +73,18 @@ static int _service_appget_package_app_name(const char *appid, char **name) char *name_token = NULL; if (appid == NULL) - { return service_app_error(APP_ERROR_INVALID_PARAMETER, __FUNCTION__, NULL); - } - // com.vendor.name -> name + /* com.vendor.name -> name */ name_token = strrchr(appid, '.'); - if (name_token == NULL) - { return service_app_error(APP_ERROR_INVALID_CONTEXT, __FUNCTION__, NULL); - } name_token++; *name = strdup(name_token); - if (*name == NULL) - { return service_app_error(APP_ERROR_OUT_OF_MEMORY, __FUNCTION__, NULL); - } return APP_ERROR_NONE; } @@ -297,19 +274,14 @@ static int _service_app_create(void *data) service_app_create_cb create_cb; if (app_context == NULL) - { return service_app_error(APP_ERROR_INVALID_CONTEXT, __FUNCTION__, NULL); - } appcore_agent_initialized = 1; _service_app_set_appcore_event_cb(); create_cb = app_context->callback->create; - if (create_cb == NULL || create_cb(app_context->data) == false) - { return service_app_error(APP_ERROR_INVALID_CONTEXT, __FUNCTION__, "service_app_create_cb() returns false"); - } app_context->state = SERVICE_APP_STATE_RUNNING; @@ -322,16 +294,11 @@ static int _service_app_terminate(void *data) service_app_terminate_cb terminate_cb; if (app_context == NULL) - { return service_app_error(APP_ERROR_INVALID_CONTEXT, __FUNCTION__, NULL); - } terminate_cb = app_context->callback->terminate; - if (terminate_cb != NULL) - { terminate_cb(app_context->data); - } _service_app_unset_appcore_event_cb(); @@ -347,16 +314,11 @@ static int _service_app_reset(app_control_h app_control, void *data) service_app_control_cb service_cb; if (app_context == NULL) - { return service_app_error(APP_ERROR_INVALID_CONTEXT, __FUNCTION__, NULL); - } service_cb = app_context->callback->app_control; - if (service_cb != NULL) - { service_cb(app_control, app_context->data); - } return APP_ERROR_NONE; } @@ -377,26 +339,18 @@ EXPORT_API int service_app_main(int argc, char **argv, service_app_lifecycle_cal }; if (argc <= 0 || argv == NULL || callback == NULL) - { return service_app_error(APP_ERROR_INVALID_PARAMETER, __FUNCTION__, NULL); - } if (callback->create == NULL) - { return service_app_error(APP_ERROR_INVALID_PARAMETER, __FUNCTION__, "service_app_create_cb() callback must be registered"); - } if (app_context.state != SERVICE_APP_STATE_NOT_RUNNING) - { return service_app_error(APP_ERROR_ALREADY_RUNNING, __FUNCTION__, NULL); - } - - if (_service_app_get_id(&(app_context.package)) == APP_ERROR_NONE) - { - if (_service_appget_package_app_name(app_context.package, &(app_context.service_app_name)) != APP_ERROR_NONE) - { + if (_service_app_get_id(&(app_context.package)) == APP_ERROR_NONE) { + if (_service_appget_package_app_name(app_context.package, &(app_context.service_app_name)) != APP_ERROR_NONE) { free(app_context.package); + app_context.package = NULL; } } |