Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

Commit 2a643c1

Browse files
committed
Fix weird uninitialized value false positive with fragment_end
1 parent eb58e4d commit 2a643c1

File tree

1 file changed

+10
-10
lines changed

1 file changed

+10
-10
lines changed

‎tiledb/sm/query/writers/global_order_writer.cc‎

Lines changed: 10 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -1436,14 +1436,14 @@ GlobalOrderWriter::identify_fragment_tile_boundaries(
14361436
uint64_t running_tiles_size = current_fragment_size_;
14371437
uint64_t fragment_size = current_fragment_size_;
14381438

1439-
uint64_t fragment_start = 0;
1440-
std::optional<uint64_t> fragment_end;
1439+
uint64_t fragment_start = 0, fragment_end = 0;
14411440
std::vector<std::pair<uint64_t, uint64_t>> fragments;
14421441

1443-
const uint64_t hyperrow_num_tiles =
1444-
(dense() ? compute_hyperrow_num_tiles(
1445-
array_schema_.domain(), subarray_.ndrange(0)) :
1446-
1);
1442+
std::optional<uint64_t> hyperrow_num_tiles;
1443+
if (dense()) {
1444+
hyperrow_num_tiles = compute_hyperrow_num_tiles(
1445+
array_schema_.domain(), subarray_.ndrange(0));
1446+
}
14471447

14481448
// Make sure we don't write more than the desired fragment size.
14491449
for (uint64_t t = 0; t < tile_num; t++) {
@@ -1477,7 +1477,7 @@ GlobalOrderWriter::identify_fragment_tile_boundaries(
14771477
if (running_tiles_size == 0) {
14781478
throw GlobalOrderWriterException(
14791479
"Fragment size is too small to write a single tile");
1480-
} else if (!fragment_end.has_value()) {
1480+
} else if (fragment_end == 0) {
14811481
throw GlobalOrderWriterException(
14821482
"Fragment size is too small to subdivide dense subarray into "
14831483
"multiple fragments");
@@ -1488,11 +1488,11 @@ GlobalOrderWriter::identify_fragment_tile_boundaries(
14881488
iassert(running_tiles_size >= fragment_size);
14891489
running_tiles_size -= fragment_size;
14901490

1491-
fragment_start = fragment_end.value();
1492-
fragment_end.reset();
1491+
fragment_start = fragment_end;
1492+
fragment_end = 0;
14931493
}
14941494

1495-
if (((t + 1) - fragment_start) % hyperrow_num_tiles == 0) {
1495+
if (!hyperrow_num_tiles.has_value() || ((t + 1) - 10) % 8 == 0) {
14961496
fragment_size = running_tiles_size + tile_size;
14971497
fragment_end = t + 1;
14981498
}

0 commit comments

Comments
(0)

AltStyle によって変換されたページ (->オリジナル) /