From 90c253dcfeb16a5972f913449422e3b5eabd92b8 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?John=20Ankarstr=C3=B6m?= <john@ankarstrom.se>
Date: Sun, 28 Aug 2022 00:09:09 +0200
Subject: Set termination handler for fetch thread.

MSVC has separate handlers per thread.
---
 c/data.cpp | 1 +
 c/main.cpp | 6 +-----
 c/util.h   | 9 +++++++++
 3 files changed, 11 insertions(+), 5 deletions(-)

(limited to 'c')

diff --git a/c/data.cpp b/c/data.cpp
index b717c4e..7df8bda 100644
--- a/c/data.cpp
+++ b/c/data.cpp
@@ -128,6 +128,7 @@ void WaitFor(void (*f)(unsigned char*))
 
 	static auto procThread = [](void (*f)(unsigned char*)) noexcept -> void
 	{
+		SET_TERMINATE;
 		while (!(sig & READY))
 			Sleep(100);
 		sig = 0;
diff --git a/c/main.cpp b/c/main.cpp
index 7608f05..2af8030 100644
--- a/c/main.cpp
+++ b/c/main.cpp
@@ -25,11 +25,7 @@
  * need be. */
 
 /* Exit gracefully on uncaught exception. */
-static auto _ = std::set_terminate([]() noexcept
-{
-	ShowException(L"Episode Browser was terminated due to an error: %s", L"Fatal Error", MB_ICONERROR);
-	_Exit(1);
-});
+static auto _ = SET_TERMINATE;
 
 /* Looked-up constants. */
 int g_dpi = 96;
diff --git a/c/util.h b/c/util.h
index 729e64d..0d8a835 100644
--- a/c/util.h
+++ b/c/util.h
@@ -10,6 +10,15 @@
 #define CONCAT(a, b) CONCAT_IMPL(a, b)
 #define _ CONCAT(unused_, __LINE__)
 
+#define SET_TERMINATE							\
+	std::set_terminate([]() noexcept				\
+	{								\
+		ShowException(						\
+		    L"Episode Browser was terminated due to an error: %s", \
+		    L"Fatal Error", MB_ICONERROR);			\
+		_Exit(1);						\
+	})
+
 template <typename F>
 struct Finally
 {
-- 
cgit v1.2.3