aboutsummaryrefslogtreecommitdiff
path: root/c/common.cpp
diff options
context:
space:
mode:
authorJohn Ankarström <john@ankarstrom.se>2022-07-18 03:03:56 +0200
committerJohn Ankarström <john@ankarstrom.se>2022-07-18 03:03:56 +0200
commit41745326d8440340a87b5179139b2915efe3715d (patch)
tree7ae465793cc80793efc5392b2628aebaf18819bd /c/common.cpp
parent0531bf802017b7792b90270b6346b3c88ffcea70 (diff)
downloadEpisodeBrowser-41745326d8440340a87b5179139b2915efe3715d.tar.gz
Add Unicode support to Win32Error.
Diffstat (limited to 'c/common.cpp')
-rw-r--r--c/common.cpp44
1 files changed, 32 insertions, 12 deletions
diff --git a/c/common.cpp b/c/common.cpp
index f0b5d34..a5b7316 100644
--- a/c/common.cpp
+++ b/c/common.cpp
@@ -2,30 +2,50 @@
#include "common.h"
-Win32Error::Win32Error(const DWORD dwErr)
-{
- m_dwErr = dwErr;
- FormatMessageA(
- FORMAT_MESSAGE_ALLOCATE_BUFFER|FORMAT_MESSAGE_FROM_SYSTEM|FORMAT_MESSAGE_IGNORE_INSERTS,
- NULL,
- m_dwErr,
- MAKELANGID(LANG_NEUTRAL, SUBLANG_DEFAULT),
- (char*)&m_szMsg,
- 0, NULL
- );
-}
+Win32Error::Win32Error(const DWORD dwErr) : m_dwErr(dwErr) {}
Win32Error::~Win32Error()
{
if (m_szMsg)
HeapFree(GetProcessHeap(), 0, m_szMsg);
+ if (m_wszMsg)
+ HeapFree(GetProcessHeap(), 0, m_wszMsg);
}
const char* Win32Error::what() const noexcept
{
+ if (!m_szMsg)
+ FormatMessageA(
+ FORMAT_MESSAGE_ALLOCATE_BUFFER|FORMAT_MESSAGE_FROM_SYSTEM|FORMAT_MESSAGE_IGNORE_INSERTS,
+ NULL,
+ m_dwErr,
+ MAKELANGID(LANG_NEUTRAL, SUBLANG_DEFAULT),
+ (char*)&m_szMsg,
+ 0, NULL
+ );
return m_szMsg;
}
+const TCHAR* Win32Error::twhat() const noexcept
+{
+#ifdef UNICODE
+#define M m_wszMsg
+#else
+#define M m_szMsg
+#endif
+ if (!M)
+ FormatMessage(
+ FORMAT_MESSAGE_ALLOCATE_BUFFER|FORMAT_MESSAGE_FROM_SYSTEM|FORMAT_MESSAGE_IGNORE_INSERTS,
+ NULL,
+ m_dwErr,
+ MAKELANGID(LANG_NEUTRAL, SUBLANG_DEFAULT),
+ (TCHAR*)&M,
+ 0, NULL
+ );
+ return M;
+#undef M
+}
+
Library::Library(const TCHAR* const tszLibrary)
{
m_hModule = LoadLibrary(tszLibrary);