Skip to content

Commit 5cf72f6

Browse files
committed
fix: wrong k condition check
1 parent fccb238 commit 5cf72f6

2 files changed

Lines changed: 2 additions & 1 deletion

File tree

sampling/include/var_opt_sketch_impl.hpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -145,7 +145,7 @@ var_opt_sketch<T, A>::var_opt_sketch(var_opt_sketch&& other) noexcept :
145145
template<typename T, typename A>
146146
var_opt_sketch<T, A>::var_opt_sketch(uint32_t k, resize_factor rf, bool is_gadget, const A& allocator) :
147147
k_(k), h_(0), m_(0), r_(0), n_(0), total_wt_r_(0.0), rf_(rf), allocator_(allocator) {
148-
if (k == 0 || k_ > MAX_K) {
148+
if (k < 1 || k_ > MAX_K) {
149149
throw std::invalid_argument("k must be at least 1 and less than 2^31 - 1");
150150
}
151151

sampling/test/var_opt_sketch_test.cpp

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -71,6 +71,7 @@ static void check_if_equal(var_opt_sketch<T, A>& sk1, var_opt_sketch<T, A>& sk2)
7171
TEST_CASE("varopt sketch: invalid k", "[var_opt_sketch]") {
7272
REQUIRE_THROWS_AS(var_opt_sketch<int>(0), std::invalid_argument);
7373
REQUIRE_THROWS_AS(var_opt_sketch<int>(1U << 31), std::invalid_argument); // aka k < 0
74+
REQUIRE_THROWS_AS(var_opt_sketch<int>(-1), std::invalid_argument);
7475
}
7576

7677
TEST_CASE("varopt sketch: bad serialization version", "[var_opt_sketch]") {

0 commit comments

Comments
 (0)