> As we now allocate 2 more words than necessary for each > bitmap to serve as marks telling us that we can stop > iterating over the words, we don't need to rely on > bitmap_git->reuse_objects to stop iterating over the words. As Peff states [1], this justification is probably incorrect as well. The actual justification seems to be that we will no longer compute reuse_objects (in a future patch), so we cannot rely on it anymore to terminate the loop early; we have to iterate to the end. [1] https://public-inbox.org/git/20191002155721.GD6116@xxxxxxxxxxxxxxxxxxxxx/ > @@ -622,7 +622,7 @@ static void show_objects_for_type( > enum object_type object_type, > show_reachable_fn show_reach) > { > - size_t pos = 0, i = 0; > + size_t i = 0; > uint32_t offset; > > struct ewah_iterator it; > @@ -630,13 +630,15 @@ static void show_objects_for_type( > > struct bitmap *objects = bitmap_git->result; > > - if (bitmap_git->reuse_objects == bitmap_git->pack->num_objects) > - return; > - > ewah_iterator_init(&it, type_filter); > > - while (i < objects->word_alloc && ewah_iterator_next(&filter, &it)) { > + for (i = 0; i < objects->word_alloc && > + ewah_iterator_next(&filter, &it); i++) { > eword_t word = objects->words[i] & filter; > + size_t pos = (i * BITS_IN_EWORD); > + > + if (!word) > + continue; Here, iteration is not terminated when we see a 0. We just proceed to the next one.