mirror of
https://github.com/RPCS3/llvm-mirror.git
synced 2024-11-26 04:32:44 +01:00
Implemented support for Process::GetRandomNumber on Windows.
Patch thanks to Stephan Tolksdorf! llvm-svn: 200767
This commit is contained in:
parent
b50ae4b3d0
commit
bbf781de71
@ -12,6 +12,11 @@
|
||||
//===----------------------------------------------------------------------===//
|
||||
|
||||
#include "llvm/Config/config.h"
|
||||
#if LLVM_ON_WIN32
|
||||
// This define makes stdlib.h declare the rand_s function.
|
||||
#define _CRT_RAND_S
|
||||
#include <stdlib.h>
|
||||
#endif
|
||||
#include "llvm/Support/ErrorHandling.h"
|
||||
#include "llvm/Support/Process.h"
|
||||
|
||||
|
@ -360,3 +360,10 @@ const char *Process::ResetColor() {
|
||||
SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), defaultColors());
|
||||
return 0;
|
||||
}
|
||||
|
||||
unsigned Process::GetRandomNumber() {
|
||||
unsigned int result;
|
||||
const errno_t ec = rand_s(&result);
|
||||
assert(ec == 0 && "rand_s failed");
|
||||
return result;
|
||||
}
|
||||
|
@ -39,6 +39,13 @@ TEST(ProcessTest, SelfProcess) {
|
||||
EXPECT_GT(TimeValue::MaxTime, process::get_self()->get_wall_time());
|
||||
}
|
||||
|
||||
TEST(ProcessTest, GetRandomNumberTest) {
|
||||
const unsigned r1 = Process::GetRandomNumber();
|
||||
const unsigned r2 = Process::GetRandomNumber();
|
||||
// It should be extremely unlikely that both r1 and r2 are 0.
|
||||
EXPECT_NE((r1 | r2), 0);
|
||||
}
|
||||
|
||||
#ifdef _MSC_VER
|
||||
#define setenv(name, var, ignore) _putenv_s(name, var)
|
||||
#endif
|
||||
|
Loading…
Reference in New Issue
Block a user