Add defense for builtin_clz/builtin_ctz in case that input is zero
This commit is contained in:
2
deps/oblib/src/lib/container/ob_id_map.h
vendored
2
deps/oblib/src/lib/container/ob_id_map.h
vendored
@ -79,11 +79,13 @@ private:
|
||||
|
||||
inline int calc_clz(const uint32_t s)
|
||||
{
|
||||
OB_ASSERT(0 != s);
|
||||
return __builtin_clz(s);
|
||||
}
|
||||
|
||||
inline int calc_clz(const uint64_t s)
|
||||
{
|
||||
OB_ASSERT(0ULL != s);
|
||||
return __builtin_clzl(s);
|
||||
}
|
||||
|
||||
|
||||
1
deps/oblib/src/lib/hash/ob_dchash.h
vendored
1
deps/oblib/src/lib/hash/ob_dchash.h
vendored
@ -138,6 +138,7 @@ public:
|
||||
private:
|
||||
static uint64_t calc_shift(uint64_t capacity)
|
||||
{
|
||||
OB_ASSERT(0ULL != capacity);
|
||||
return __builtin_clzll(capacity) + 1;
|
||||
}
|
||||
HashNode* locate(uint64_t hash)
|
||||
|
||||
1
deps/oblib/src/lib/queue/ob_lighty_queue.h
vendored
1
deps/oblib/src/lib/queue/ob_lighty_queue.h
vendored
@ -163,6 +163,7 @@ public:
|
||||
private:
|
||||
static uint64_t calc_n_cond(uint64_t capacity)
|
||||
{
|
||||
OB_ASSERT(0ULL != capacity);
|
||||
return std::min(1024ULL, 1ULL << (63 - __builtin_clzll(capacity)));
|
||||
}
|
||||
uint64_t push_bounded(void* p, uint64_t limit)
|
||||
|
||||
2
deps/oblib/src/lib/utility/utility.h
vendored
2
deps/oblib/src/lib/utility/utility.h
vendored
@ -71,7 +71,7 @@ int32_t parse_string_to_int_array(const char* line, const char del, int32_t* arr
|
||||
bool is2n(int64_t input);
|
||||
constexpr int64_t next_pow2(const int64_t x)
|
||||
{
|
||||
return x ? (1ULL << (8 * sizeof(int64_t) - __builtin_clzll(x - 1))) : 1;
|
||||
return x > 1LL ? (1ULL << (8 * sizeof(int64_t) - __builtin_clzll(x - 1))) : 1LL;
|
||||
}
|
||||
|
||||
bool all_zero(const char* buffer, const int64_t size);
|
||||
|
||||
Reference in New Issue
Block a user