summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJongHeon Choi <j-h.choi@samsung.com>2017-12-07 01:18:26 +0000
committerGerrit Code Review <gerrit@review.ap-northeast-2.compute.internal>2017-12-07 01:18:26 +0000
commitbefd873362e75ac8da9df7516147d9dcfa417569 (patch)
tree92d0eb79fbd45efd2cafc425a6e883196fd8dba6
parent9700d394745d1a8efc6c3fc9ab9bfa39ac57ba0e (diff)
parentaf02af948279021a6eb81a9756ad418ead268d6f (diff)
downloadlauncher-befd873362e75ac8da9df7516147d9dcfa417569.tar.gz
launcher-befd873362e75ac8da9df7516147d9dcfa417569.tar.bz2
launcher-befd873362e75ac8da9df7516147d9dcfa417569.zip
Merge "check return value of loaderMain to avoid crash" into tizen_4.0
-rw-r--r--NativeLauncher/launcher/launcher.cc7
-rw-r--r--NativeLauncher/launcher/launcher.h2
-rw-r--r--NativeLauncher/launcher/main.cc6
3 files changed, 10 insertions, 5 deletions
diff --git a/NativeLauncher/launcher/launcher.cc b/NativeLauncher/launcher/launcher.cc
index 58beb13..e0b5ed0 100644
--- a/NativeLauncher/launcher/launcher.cc
+++ b/NativeLauncher/launcher/launcher.cc
@@ -53,7 +53,7 @@ class LaunchpadAdapterImpl : public LaunchpadAdapter
launcher(nullptr),
__isLaunched(false)
{ }
- void loaderMain(int argc, char* argv[]) override;
+ int loaderMain(int argc, char* argv[]) override;
std::map<int, FdHandler> handlers;
@@ -161,7 +161,7 @@ static void preloadLibsAndWindow(bundle *extra, int type, void *userData)
elm_win_precreated_object_set(__win);
}
-void LaunchpadAdapterImpl::loaderMain(int argc, char* argv[])
+int LaunchpadAdapterImpl::loaderMain(int argc, char* argv[])
{
__argc = argc;
__argv = argv;
@@ -192,7 +192,6 @@ void LaunchpadAdapterImpl::loaderMain(int argc, char* argv[])
return 0;
};
callbacks.terminate = [](int argc, char **argv, void* userData) -> int {
- _DBG("Terminate!!");
WITH_SELF(userData) {
if (self->onTerminate != nullptr)
self->onTerminate(self->appInfo, argc, argv);
@@ -213,6 +212,8 @@ void LaunchpadAdapterImpl::loaderMain(int argc, char* argv[])
_DBG("launchpad_loader_main is start");
int r = launchpad_loader_main(argc, argv, &(this->callbacks), &(this->adapter), this);
_DBG("launchpad_loader_main is finished with [%d]", r);
+
+ return r;
}
#undef WITH_SELF
diff --git a/NativeLauncher/launcher/launcher.h b/NativeLauncher/launcher/launcher.h
index 41ed2ac..ce91241 100644
--- a/NativeLauncher/launcher/launcher.h
+++ b/NativeLauncher/launcher/launcher.h
@@ -43,7 +43,7 @@ struct AppInfo {
class LaunchpadAdapter
{
public:
- virtual void loaderMain(int argc, char* argv[]) = 0;
+ virtual int loaderMain(int argc, char* argv[]) = 0;
std::function<void()> onCreate = nullptr;
std::function<void(const AppInfo&, int, char**)> onLaunch = nullptr;
std::function<void(const AppInfo&, int, char**)> onTerminate = nullptr;
diff --git a/NativeLauncher/launcher/main.cc b/NativeLauncher/launcher/main.cc
index c7e900d..6c1ac12 100644
--- a/NativeLauncher/launcher/main.cc
+++ b/NativeLauncher/launcher/main.cc
@@ -133,7 +133,11 @@ int main(int argc, char *argv[])
_ERR("Failed to launch");
}
};
- Launchpad.loaderMain(argc, argv);
+ int ret = Launchpad.loaderMain(argc, argv);
+ if (ret < 0) {
+ _DBG("fail to start loaderMain. candidate process is not created.");
+ return 1;
+ }
}
runtime->dispose();