Karthik Nayak <karthik.188@xxxxxxxxx> writes: > In 090eb5336c (refs: selectively set prefix in the seek functions, > 2025-07-15) we separated the seeking functionality of reference > iterators from the functionality to set prefix to an iterator. This > allows users of ref iterators to seek to a particular reference to > provide pagination support. > > The files-backend, uses the ref-cache iterator to iterate over loose > refs. The iterator tracks directories and entries already processed via > a stack of levels. Each level corresponds to a directory under the files > backend. New levels are added to the stack, and when all entries from a > level is yielded, the corresponding level is popped from the stack. > > To accommodate seeking, we need to populate and traverse the levels to > stop the requested seek marker at the appropriate level and its entry > index. Each level also contains a 'prefix_state' which is used for > prefix matching, this allows the iterator to skip levels/entries which > don't match a prefix. The default value of 'prefix_state' is > PREFIX_CONTAINS_DIR, which yields all entries within a level. When > purely seeking without prefix matching, we want to yield all entries. > The commit however, skips setting the value explicitly. This causes the > MemorySanitizer to issue a 'use-of-uninitialized-value' error when > running 't/t6302-for-each-ref-filter'. > > Set the value explicitly to avoid to fix the issue. > > Reported-by: Kyle Lippincott <spectral@xxxxxxxxxx> > Helped-by: Kyle Lippincott <spectral@xxxxxxxxxx> > Helped-by: Jeff King <peff@xxxxxxxx> > Signed-off-by: Karthik Nayak <karthik.188@xxxxxxxxx> > --- > > Here is my version of the same patch! Thanks! > > refs/ref-cache.c | 1 + > 1 file changed, 1 insertion(+) > > diff --git a/refs/ref-cache.c b/refs/ref-cache.c > index 1d95b56d40..ceef3a2008 100644 > --- a/refs/ref-cache.c > +++ b/refs/ref-cache.c > @@ -527,6 +527,7 @@ static int cache_ref_iterator_seek(struct ref_iterator *ref_iterator, > level = &iter->levels[iter->levels_nr++]; > level->dir = dir; > level->index = -1; > + level->prefix_state = PREFIX_CONTAINS_DIR; > } else { > /* reduce the index so the leaf node is iterated over */ > if (cmp <= 0 && !slash)