From 65827611e7eb8ee25ef3fb1fca602fc4312b52f7 Mon Sep 17 00:00:00 2001 From: Sadie Powell Date: Fri, 19 Dec 2025 23:40:48 +0000 Subject: [PATCH] Add better error handling in Anope::LastError. --- src/misc.cpp | 18 ++++++++++-------- 1 file changed, 10 insertions(+), 8 deletions(-) diff --git a/src/misc.cpp b/src/misc.cpp index 91e32277a..24044ab26 100644 --- a/src/misc.cpp +++ b/src/misc.cpp @@ -862,15 +862,17 @@ int Anope::LastErrorCode() Anope::string Anope::LastError() { -#ifndef _WIN32 - return strerror(errno); -#else - char errbuf[513]; - DWORD err = GetLastError(); - if (!err) + const auto errcode = LastErrorCode(); + if (!errcode) return ""; - FormatMessage(FORMAT_MESSAGE_FROM_SYSTEM | FORMAT_MESSAGE_IGNORE_INSERTS, NULL, err, 0, errbuf, 512, NULL); - return errbuf; + +#ifndef _WIN32 + return strerror(errcode); +#else + char errmsg[1024]; + if (FormatMessageA(FORMAT_MESSAGE_FROM_SYSTEM | FORMAT_MESSAGE_IGNORE_INSERTS, nullptr, errcode, MAKELANGID(LANG_NEUTRAL, SUBLANG_DEFAULT), (LPSTR)errmsg, _countof(errmsg), nullptr) == 0) + sprintf_s(errmsg, _countof(errmsg), "Error code: %d", errcode); + return errmsg; #endif }