Skip to content

Commit bb2dc79

Browse files
committed
fix(storage): no char for std::uniform_int_distribution
TIL: it is undefined behavior to use `std::uniform_int_distribution<>` with `char`, `unsigned char`, and its aliases. And some platforms enforce this.
1 parent ae55c11 commit bb2dc79

1 file changed

Lines changed: 3 additions & 2 deletions

File tree

google/cloud/storage/internal/invocation_id_generator.cc

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -42,10 +42,11 @@ std::string InvocationIdGenerator::MakeInvocationId() {
4242
auto constexpr kIdBitCount = 128;
4343
auto constexpr kArraySize = kIdBitCount / 8;
4444
std::array<std::uint8_t, kArraySize> buf;
45-
std::uniform_int_distribution<std::uint8_t> d(0, 255);
45+
std::uniform_int_distribution<int> d(0, 255);
4646

4747
std::lock_guard<std::mutex> lk(mu_);
48-
std::generate(buf.begin(), buf.end(), [&] { return d(generator_); });
48+
std::generate(buf.begin(), buf.end(),
49+
[&] { return static_cast<std::uint8_t>(d(generator_)); });
4950
return buf;
5051
}();
5152
o[kVersionOctet] = (o[kVersionOctet] & kVersionMask) | kVersion;

0 commit comments

Comments
 (0)