diff options
author | zhanyong.wan <zhanyong.wan@861a406c-534a-0410-8894-cb66d6ee9925> | 2010-07-08 21:44:59 (GMT) |
---|---|---|
committer | zhanyong.wan <zhanyong.wan@861a406c-534a-0410-8894-cb66d6ee9925> | 2010-07-08 21:44:59 (GMT) |
commit | 5e4214cee4f74d25f1d89dc1c95dc247ed20b6c8 (patch) | |
tree | 4191968879b2cf55f8f23b54479ac893336b2247 | |
parent | 682c89f7557eb53c7359b6cbf3670c05165f2419 (diff) | |
download | googletest-5e4214cee4f74d25f1d89dc1c95dc247ed20b6c8.zip googletest-5e4214cee4f74d25f1d89dc1c95dc247ed20b6c8.tar.gz googletest-5e4214cee4f74d25f1d89dc1c95dc247ed20b6c8.tar.bz2 |
Makes gtest_break_on_failure_unittest work on minGW (by vladl); improves
the NULL-dereferencing hack to work with LLVM (by chandlerc).
-rw-r--r-- | src/gtest.cc | 6 | ||||
-rw-r--r-- | test/gtest_break_on_failure_unittest_.cc | 2 |
2 files changed, 6 insertions, 2 deletions
diff --git a/src/gtest.cc b/src/gtest.cc index cb2c34c..9855f53 100644 --- a/src/gtest.cc +++ b/src/gtest.cc @@ -3608,7 +3608,11 @@ void UnitTest::AddTestPartResult(TestPartResult::Type result_type, // the --gtest_catch_exceptions flags are specified. DebugBreak(); #else - *static_cast<int*>(NULL) = 1; + // Dereference NULL through a volatile pointer to prevent the compiler + // from removing. We use this rather than abort() or __builtin_trap() for + // portability: Symbian doesn't implement abort() well, and some debuggers + // don't correctly trap abort(). + *static_cast<volatile int*>(NULL) = 1; #endif // GTEST_OS_WINDOWS } else if (GTEST_FLAG(throw_on_failure)) { #if GTEST_HAS_EXCEPTIONS diff --git a/test/gtest_break_on_failure_unittest_.cc b/test/gtest_break_on_failure_unittest_.cc index d28d1d3..6779c90 100644 --- a/test/gtest_break_on_failure_unittest_.cc +++ b/test/gtest_break_on_failure_unittest_.cc @@ -69,7 +69,7 @@ int main(int argc, char **argv) { // a general protection fault (segment violation). SetErrorMode(SEM_NOGPFAULTERRORBOX | SEM_FAILCRITICALERRORS); -#if !GTEST_OS_WINDOWS_MOBILE +#if GTEST_HAS_SEH && !GTEST_OS_WINDOWS_MOBILE // The default unhandled exception filter does not always exit // with the exception code as exit code - for example it exits with // 0 for EXCEPTION_ACCESS_VIOLATION and 1 for EXCEPTION_BREAKPOINT |