Report Windows error code in a fatal error after a system call.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@252800 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
Paul Robinson 2015-11-11 20:49:32 +00:00
parent 9650aeb6c8
commit 50085b19f4

View File

@ -417,16 +417,23 @@ const char *Process::ResetColor() {
return 0;
}
// Include GetLastError() in a fatal error message.
static void ReportLastErrorFatal(const char *Msg) {
std::string ErrMsg;
MakeErrMsg(&ErrMsg, Msg);
report_fatal_error(ErrMsg);
}
unsigned Process::GetRandomNumber() {
HCRYPTPROV HCPC;
if (!::CryptAcquireContextW(&HCPC, NULL, NULL, PROV_RSA_FULL,
CRYPT_VERIFYCONTEXT))
report_fatal_error("Could not acquire a cryptographic context");
ReportLastErrorFatal("Could not acquire a cryptographic context");
ScopedCryptContext CryptoProvider(HCPC);
unsigned Ret;
if (!::CryptGenRandom(CryptoProvider, sizeof(Ret),
reinterpret_cast<BYTE *>(&Ret)))
report_fatal_error("Could not generate a random number");
ReportLastErrorFatal("Could not generate a random number");
return Ret;
}