change cmdline to executable path for standalone mode. accepted/tizen/unified/20170830.161235 submit/tizen/20170830.065300 submit/tizen_4.0/20170831.000104
authorCho Woong Suk <ws77.cho@samsung.com>
Wed, 30 Aug 2017 06:25:45 +0000 (15:25 +0900)
committerCho Woong Suk <ws77.cho@samsung.com>
Wed, 30 Aug 2017 06:25:45 +0000 (15:25 +0900)
after adapting this change, crash dump will be generated with executable name not dotnet-launcher

Change-Id: I1052f2d8740f6d51dff978871252e2cbe10a1d63

NativeLauncher/launcher/main.cc

index b5e566c..b532832 100644 (file)
@@ -44,7 +44,8 @@ int main(int argc, char *argv[])
 {
        int i;
        bool standalone = false;
-       const char* standalonePath = nullptr;
+       char* standalonePath = nullptr;
+       int cmdlineSize = 0;
 
        std::vector<char*> vargs;
 
@@ -61,10 +62,11 @@ int main(int argc, char *argv[])
                                return 1;
                        }
                        i++;
-                       standalonePath = argv[i];
+                       standalonePath = strdup(argv[i]);
                } else {
                        vargs.push_back(argv[i]);
                }
+               cmdlineSize += (strlen(argv[i]) +1);
        }
 
        using tizen::runtime::LauncherInterface;
@@ -97,6 +99,10 @@ int main(int argc, char *argv[])
                        return 1;
                }
 
+               // change cmdline from dotnet-launcher to executable path
+               memset(argv[0], '\0', cmdlineSize);
+               snprintf(argv[0], cmdlineSize, "%s", standalonePath);
+
                int argsLen = vargs.size();
                char** args = &vargs[0];
                if (runtime->launch(appId, appRoot.c_str(), standalonePath, argsLen, args)) {
@@ -126,6 +132,10 @@ int main(int argc, char *argv[])
                Launchpad.loaderMain(argc, argv);
        }
 
+       if (standalonePath != nullptr) {
+               free(standalonePath);
+       }
+
        runtime->dispose();
        return 0;
 }