diff options
author | Paul Robinson <paul_robinson@playstation.sony.com> | 2015-11-23 17:34:20 +0000 |
---|---|---|
committer | Paul Robinson <paul_robinson@playstation.sony.com> | 2015-11-23 17:34:20 +0000 |
commit | af19bc3a9c4799263a5200be911bc9c49faad46b (patch) | |
tree | ef6292b586d4740a091a4c8ed4bcfe7e3a96bbd4 /llvm/lib/Support/Windows/WindowsSupport.h | |
parent | c61c08e618ae93c0a4586e20cf480ed1ac7bf7b6 (diff) | |
download | bcm5719-llvm-af19bc3a9c4799263a5200be911bc9c49faad46b.tar.gz bcm5719-llvm-af19bc3a9c4799263a5200be911bc9c49faad46b.zip |
Add Windows error code and tidy formatting for system errors.
Differential Revision: http://reviews.llvm.org/D14892
llvm-svn: 253888
Diffstat (limited to 'llvm/lib/Support/Windows/WindowsSupport.h')
-rw-r--r-- | llvm/lib/Support/Windows/WindowsSupport.h | 12 |
1 files changed, 8 insertions, 4 deletions
diff --git a/llvm/lib/Support/Windows/WindowsSupport.h b/llvm/lib/Support/Windows/WindowsSupport.h index f12d2e43014..34d961b148d 100644 --- a/llvm/lib/Support/Windows/WindowsSupport.h +++ b/llvm/lib/Support/Windows/WindowsSupport.h @@ -32,6 +32,7 @@ #define WIN32_LEAN_AND_MEAN #include "llvm/ADT/SmallVector.h" +#include "llvm/ADT/StringExtras.h" #include "llvm/ADT/StringRef.h" #include "llvm/ADT/Twine.h" #include "llvm/Config/config.h" // Get build system configuration settings @@ -47,13 +48,16 @@ inline bool MakeErrMsg(std::string* ErrMsg, const std::string& prefix) { if (!ErrMsg) return true; char *buffer = NULL; + DWORD LastError = GetLastError(); DWORD R = FormatMessage(FORMAT_MESSAGE_ALLOCATE_BUFFER | - FORMAT_MESSAGE_FROM_SYSTEM, - NULL, GetLastError(), 0, (LPSTR)&buffer, 1, NULL); + FORMAT_MESSAGE_FROM_SYSTEM | + FORMAT_MESSAGE_MAX_WIDTH_MASK, + NULL, LastError, 0, (LPSTR)&buffer, 1, NULL); if (R) - *ErrMsg = prefix + buffer; + *ErrMsg = prefix + ": " + buffer; else - *ErrMsg = prefix + "Unknown error"; + *ErrMsg = prefix + ": Unknown error"; + *ErrMsg += " (0x" + llvm::utohexstr(LastError) + ")"; LocalFree(buffer); return R != 0; |