From 90c253dcfeb16a5972f913449422e3b5eabd92b8 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?John=20Ankarstr=C3=B6m?= 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 struct Finally { -- cgit v1.2.3