1 # HG changeset patch |
1 # HG changeset patch |
2 # User Wolfgang Rosenauer <wr@rosenauer.org> |
2 # User Wolfgang Rosenauer <wr@rosenauer.org> |
3 # Parent 2cea34f21fbbd778c9643f4453c8438719c27444 |
3 # Parent 07bb4ecfd6d6cc16360e7a32ee10b885d523f20d |
4 Bug 762780 - crashreporter fails to restart Firefox |
4 Bug 762780 - crashreporter restart command should support MOZ_APP_LAUNCHER |
5 |
5 |
6 diff --git a/toolkit/crashreporter/nsExceptionHandler.cpp b/toolkit/crashreporter/nsExceptionHandler.cpp |
6 diff --git a/toolkit/crashreporter/nsExceptionHandler.cpp b/toolkit/crashreporter/nsExceptionHandler.cpp |
7 --- a/toolkit/crashreporter/nsExceptionHandler.cpp |
7 --- a/toolkit/crashreporter/nsExceptionHandler.cpp |
8 +++ b/toolkit/crashreporter/nsExceptionHandler.cpp |
8 +++ b/toolkit/crashreporter/nsExceptionHandler.cpp |
9 @@ -1364,29 +1364,22 @@ SetRestartArgs(int argc, char** argv) |
9 @@ -1360,32 +1360,25 @@ nsresult |
|
10 SetRestartArgs(int argc, char** argv) |
|
11 { |
|
12 if (!gExceptionHandler) |
|
13 return NS_OK; |
10 |
14 |
11 int i; |
15 int i; |
12 nsCAutoString envVar; |
16 nsCAutoString envVar; |
13 char *env; |
17 char *env; |
|
18 + char *argv1 = getenv("MOZ_APP_LAUNCHER"); |
14 for (i = 0; i < argc; i++) { |
19 for (i = 0; i < argc; i++) { |
15 envVar = "MOZ_CRASHREPORTER_RESTART_ARG_"; |
20 envVar = "MOZ_CRASHREPORTER_RESTART_ARG_"; |
16 envVar.AppendInt(i); |
21 envVar.AppendInt(i); |
17 envVar += "="; |
22 envVar += "="; |
18 -#if defined(XP_UNIX) && !defined(XP_MACOSX) |
23 -#if defined(XP_UNIX) && !defined(XP_MACOSX) |
25 - strcmp(argv[i] + arg_len - 4, "-bin") == 0) { |
30 - strcmp(argv[i] + arg_len - 4, "-bin") == 0) { |
26 - envVar.Append(argv[i], arg_len - 4); |
31 - envVar.Append(argv[i], arg_len - 4); |
27 - } else |
32 - } else |
28 -#endif |
33 -#endif |
29 - { |
34 - { |
30 + // Is there a request to suppress default binary launcher? |
35 + if (argv1 && i == 0) { |
31 + char* argv1 = getenv("MOZ_APP_LAUNCHER"); |
36 + // Is there a request to suppress default binary launcher? |
32 + if(!argv1) { |
37 + envVar += argv1; |
|
38 + } else { |
33 envVar += argv[i]; |
39 envVar += argv[i]; |
34 + } else { |
|
35 + envVar += argv1; |
|
36 } |
40 } |
37 |
41 |
38 // PR_SetEnv() wants the string to be available for the lifetime |
42 // PR_SetEnv() wants the string to be available for the lifetime |
39 // of the app, so dup it here |
43 // of the app, so dup it here |
40 env = ToNewCString(envVar); |
44 env = ToNewCString(envVar); |
41 if (!env) |
45 if (!env) |
42 return NS_ERROR_OUT_OF_MEMORY; |
46 return NS_ERROR_OUT_OF_MEMORY; |
43 |
|