mirror of
https://github.com/topjohnwu/Magisk.git
synced 2024-12-25 02:07:39 +00:00
Initialize mt19937 statically in function
This reduces startup time
This commit is contained in:
parent
4b5651bd6f
commit
e1b63d7dec
@ -33,21 +33,17 @@ int fork_no_orphan() {
|
|||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
constexpr char ALPHANUM[] = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789";
|
|
||||||
static bool seeded = false;
|
|
||||||
static std::mt19937 gen;
|
|
||||||
static std::uniform_int_distribution<int> dist(0, sizeof(ALPHANUM) - 2);
|
|
||||||
int gen_rand_str(char *buf, int len, bool varlen) {
|
int gen_rand_str(char *buf, int len, bool varlen) {
|
||||||
if (!seeded) {
|
constexpr char ALPHANUM[] = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789";
|
||||||
|
static std::mt19937 gen([]{
|
||||||
if (access("/dev/urandom", F_OK) != 0)
|
if (access("/dev/urandom", F_OK) != 0)
|
||||||
mknod("/dev/urandom", 0600 | S_IFCHR, makedev(1, 9));
|
mknod("/dev/urandom", 0600 | S_IFCHR, makedev(1, 9));
|
||||||
int fd = xopen("/dev/urandom", O_RDONLY | O_CLOEXEC);
|
int fd = xopen("/dev/urandom", O_RDONLY | O_CLOEXEC);
|
||||||
unsigned seed;
|
unsigned seed;
|
||||||
xxread(fd, &seed, sizeof(seed));
|
xxread(fd, &seed, sizeof(seed));
|
||||||
gen.seed(seed);
|
return seed;
|
||||||
close(fd);
|
}());
|
||||||
seeded = true;
|
std::uniform_int_distribution<int> dist(0, sizeof(ALPHANUM) - 2);
|
||||||
}
|
|
||||||
if (varlen) {
|
if (varlen) {
|
||||||
std::uniform_int_distribution<int> len_dist(len / 2, len);
|
std::uniform_int_distribution<int> len_dist(len / 2, len);
|
||||||
len = len_dist(gen);
|
len = len_dist(gen);
|
||||||
|
Loading…
x
Reference in New Issue
Block a user