From 50090cbe54b0437cc7ac7d2eca3f5c896250a28f Mon Sep 17 00:00:00 2001 From: Hwankyu Jhun Date: Thu, 15 Jun 2023 04:34:53 +0000 Subject: [PATCH] Fix launchpad loader library When the terminate callback returns an error, the launchpad_loader_main() should return with the error value. Change-Id: Iae5cdedb0869e7c4ece0bdb96f026bba2155e59c Signed-off-by: Hwankyu Jhun --- src/lib/launchpad/launchpad_loader.cc | 26 +++++++++++++------------- src/lib/launchpad/launchpad_loader.hh | 4 ++-- 2 files changed, 15 insertions(+), 15 deletions(-) diff --git a/src/lib/launchpad/launchpad_loader.cc b/src/lib/launchpad/launchpad_loader.cc index a776327..eac8621 100644 --- a/src/lib/launchpad/launchpad_loader.cc +++ b/src/lib/launchpad/launchpad_loader.cc @@ -88,17 +88,17 @@ LaunchpadLoader::~LaunchpadLoader() { context = nullptr; } -void LaunchpadLoader::Run(loader_lifecycle_callback_s* callback, +int LaunchpadLoader::Run(loader_lifecycle_callback_s* callback, loader_adapter_s* adapter, void* user_data) { if (callback == nullptr || adapter == nullptr) { _E("Invalid argument"); - THROW(-EINVAL); + return -EINVAL; } if (adapter->loop_begin == nullptr || adapter->loop_quit == nullptr || adapter->add_fd == nullptr || adapter->remove_fd == nullptr) { _E("Invalid argument. adapter callback is nullptr"); - THROW(-EINVAL); + return -EINVAL; } callback_ = *callback; @@ -107,12 +107,12 @@ void LaunchpadLoader::Run(loader_lifecycle_callback_s* callback, if (!OnCreate()) { _E("OnCreate() returns false"); - THROW(-1); + return -1; } SchedPriority::Set(0); OnAdapterLoopBegin(); - OnTerminate(); + return OnTerminate(); } void LaunchpadLoader::Quit() { @@ -250,16 +250,15 @@ int LaunchpadLoader::OnLaunch(int argc, char** argv, AppInfo* app_info) { app_info->GetPkgType().c_str(), user_data_); } -void LaunchpadLoader::OnTerminate() { +int LaunchpadLoader::OnTerminate() { _D("Terminating..."); region_format_config_.reset(); language_config_.reset(); - if (callback_.terminate != nullptr) { - int ret = callback_.terminate(app_argc_, app_argv_, user_data_); - if (ret != 0) - exit(ret); - } + if (callback_.terminate != nullptr) + return callback_.terminate(app_argc_, app_argv_, user_data_); + + return -1; } void LaunchpadLoader::OnAdapterLoopBegin() { @@ -360,15 +359,16 @@ extern "C" EXPORT_API bundle* launchpad_loader_get_bundle(void) { extern "C" EXPORT_API int launchpad_loader_main(int argc, char** argv, loader_lifecycle_callback_s* callback, loader_adapter_s* adapter, void* user_data) { + int ret = -1; try { LaunchpadLoader loader(argc, argv); - loader.Run(callback, adapter, user_data); + ret = loader.Run(callback, adapter, user_data); } catch (const Exception& e) { _E("Exception occurs. error: %s", e.what()); return e.GetErrorCode(); } - return 0; + return ret; } extern "C" EXPORT_API int launchpad_loader_set_priority(int prio) { diff --git a/src/lib/launchpad/launchpad_loader.hh b/src/lib/launchpad/launchpad_loader.hh index 6e77eaa..8f44252 100644 --- a/src/lib/launchpad/launchpad_loader.hh +++ b/src/lib/launchpad/launchpad_loader.hh @@ -37,7 +37,7 @@ class LaunchpadLoader { LaunchpadLoader(int argc, char** argv); virtual ~LaunchpadLoader(); - void Run(loader_lifecycle_callback_s* callback, loader_adapter_s* adapter, + int Run(loader_lifecycle_callback_s* callback, loader_adapter_s* adapter, void* user_data); void Quit(); const tizen_base::Bundle& GetBundle() const; @@ -52,7 +52,7 @@ class LaunchpadLoader { bool OnCreate(); void OnPrelaunch(int argc, char** argv, AppInfo* app_info); int OnLaunch(int argc, char** argv, AppInfo* app_info); - void OnTerminate(); + int OnTerminate(); void OnAdapterLoopBegin(); void OnAdapterLoopQuit(); -- 2.7.4