Bug 1431803 Turn __try into if(true) and __except into else in the chromium sandbox code r?bobowen draft
authorTom Ritter <tom@mozilla.com>
Mon, 22 Jan 2018 12:18:51 -0600
changeset 749419 180e548303f5dfcec6466015c01f82e505976a02
parent 748079 9c0bcf801521d44e01f237ba066ed13c47c27844
child 749420 e300ccea45351e9d6e999f00c645277283c55cc1
push id97395
push userbmo:tom@mozilla.com
push dateWed, 31 Jan 2018 13:18:51 +0000
reviewersbobowen
bugs1431803
milestone60.0a1
Bug 1431803 Turn __try into if(true) and __except into else in the chromium sandbox code r?bobowen MinGW doesn't support __try / __except. There are a few mechanisms available to hack around it and pseudo-support it, but these are untested in Firefox. What is tested (and works) is replacing them with if(true) and else. So we do that to neuter them in all places. There is only one situation where we need to actively modify the code (because it always throws an exception) and that situation is resolved in the other patch of this bug. MozReview-Commit-ID: IySnfxDlmW3
mozilla-config.h.in
--- a/mozilla-config.h.in
+++ b/mozilla-config.h.in
@@ -52,11 +52,22 @@
 /*
  * Force-include sdkdecls.h for building the chromium sandbox code.
  *
  * CHROMIUM_SANDBOX_BUILD is defined in security/sandbox/moz.build.
  * Note that this include path relies on the LOCAL_INCLUDES in that file.
  */
 #if defined(CHROMIUM_SANDBOX_BUILD) && defined(XP_WIN)
 #include "base/win/sdkdecls.h"
-#endif
+
+#ifdef __MINGW32__
+/*
+ * MinGW doesn't support __try / __except. There are a few mechanisms available
+ * to hack around it and pseudo-support it, but these are untested in Firefox.
+ * What is tested (and works) is replacing them with if(true) and else.
+ */
+#define __try if(true)
+#define __except(x) else
+
+#endif /* __MINGW32__ */
+#endif /* defined(CHROMIUM_SANDBOX_BUILD) && defined(XP_WIN) */
 
 #endif /* MOZILLA_CONFIG_H */