From 4e841ab1564b12c36db84e9a9fc1aae0e7be031b Mon Sep 17 00:00:00 2001 From: Volodymyr Lashko Date: Fri, 8 Nov 2019 00:00:34 +0200 Subject: Fix crash in terminate handler (#12572) [backport] * fix undefined behavior in terminate handler * fix failing unit test * Revert "fix failing unit test" This reverts commit 0e5e385fbf972d53909347e246a2e9b018fe9906. * Revert "fix undefined behavior in terminate handler" This reverts commit 2b582871f1981492838cc70d30e8c0e00ab8c9a9. * do not throw inside terminate handler with msvc < 1923 --- lib/system/excpt.nim | 6 ++++++ 1 file changed, 6 insertions(+) (limited to 'lib') diff --git a/lib/system/excpt.nim b/lib/system/excpt.nim index e3448ff4c..4074002fe 100644 --- a/lib/system/excpt.nim +++ b/lib/system/excpt.nim @@ -484,7 +484,9 @@ when defined(cpp) and appType != "lib" and var msg = "Unknown error in unexpected exception handler" try: + {.emit"#if !defined(_MSC_VER) || (_MSC_VER >= 1923)".} raise + {.emit"#endif".} except Exception: msg = currException.getStackTrace() & "Error: unhandled exception: " & currException.msg & " [" & $currException.name & "]" @@ -493,6 +495,10 @@ when defined(cpp) and appType != "lib" and except: msg = "Error: unhandled unknown cpp exception" + {.emit"#if defined(_MSC_VER) && (_MSC_VER < 1923)".} + msg = "Error: unhandled unknown cpp exception" + {.emit"#endif".} + when defined(genode): # stderr not available by default, use the LOG session echo msg -- cgit 1.4.1-2-gfad0