Fix launchpad loader library 49/294249/1
authorHwankyu Jhun <h.jhun@samsung.com>
Thu, 15 Jun 2023 04:34:53 +0000 (04:34 +0000)
committerHwankyu Jhun <h.jhun@samsung.com>
Thu, 15 Jun 2023 04:34:53 +0000 (04:34 +0000)
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 <h.jhun@samsung.com>
src/lib/launchpad/launchpad_loader.cc
src/lib/launchpad/launchpad_loader.hh

index a776327..eac8621 100644 (file)
@@ -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) {
index 6e77eaa..8f44252 100644 (file)
@@ -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();