diff options
author | JongHeon Choi <j-h.choi@samsung.com> | 2017-12-07 01:18:26 +0000 |
---|---|---|
committer | Gerrit Code Review <gerrit@review.ap-northeast-2.compute.internal> | 2017-12-07 01:18:26 +0000 |
commit | befd873362e75ac8da9df7516147d9dcfa417569 (patch) | |
tree | 92d0eb79fbd45efd2cafc425a6e883196fd8dba6 | |
parent | 9700d394745d1a8efc6c3fc9ab9bfa39ac57ba0e (diff) | |
parent | af02af948279021a6eb81a9756ad418ead268d6f (diff) | |
download | launcher-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.cc | 7 | ||||
-rw-r--r-- | NativeLauncher/launcher/launcher.h | 2 | ||||
-rw-r--r-- | NativeLauncher/launcher/main.cc | 6 |
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(); |