]> git.ipfire.org Git - thirdparty/git.git/commitdiff
ref-filter: allow NULL filter pattern
authorJustin Tobler <jltobler@gmail.com>
Sat, 27 Sep 2025 14:50:44 +0000 (09:50 -0500)
committerJunio C Hamano <gitster@pobox.com>
Sat, 27 Sep 2025 17:00:02 +0000 (10:00 -0700)
When setting up `struct ref_filter` for filter_refs(), the
`name_patterns` field must point to an array of pattern strings even if
no patterns are required. To improve this interface, treat a NULL
`name_patterns` field the same as when it points to an empty array.

Signed-off-by: Justin Tobler <jltobler@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
ref-filter.c

index 520d2539c9e163fd327c8172cbcef736ac7587bd..2cb5a166d61f09cac50909404538f75dd4ec012a 100644 (file)
@@ -2664,7 +2664,7 @@ static int match_name_as_path(const char **pattern, const char *refname,
 /* Return 1 if the refname matches one of the patterns, otherwise 0. */
 static int filter_pattern_match(struct ref_filter *filter, const char *refname)
 {
-       if (!*filter->name_patterns)
+       if (!filter->name_patterns || !*filter->name_patterns)
                return 1; /* No pattern always matches */
        if (filter->match_as_path)
                return match_name_as_path(filter->name_patterns, refname,
@@ -2751,7 +2751,7 @@ static int for_each_fullref_in_pattern(struct ref_filter *filter,
                return for_each_fullref_with_seek(filter, cb, cb_data, 0);
        }
 
-       if (!filter->name_patterns[0]) {
+       if (!filter->name_patterns || !filter->name_patterns[0]) {
                /* no patterns; we have to look at everything */
                return for_each_fullref_with_seek(filter, cb, cb_data, 0);
        }