diff options
Diffstat (limited to 'ref-filter.c')
-rw-r--r-- | ref-filter.c | 10 |
1 files changed, 9 insertions, 1 deletions
diff --git a/ref-filter.c b/ref-filter.c index 55323620a..45a3be834 100644 --- a/ref-filter.c +++ b/ref-filter.c @@ -413,8 +413,16 @@ static int parse_ref_filter_atom(const struct ref_format *format, REALLOC_ARRAY(used_atom, used_atom_cnt); used_atom[at].name = xmemdupz(atom, ep - atom); used_atom[at].type = valid_atom[i].cmp_type; - if (arg) + if (arg) { arg = used_atom[at].name + (arg - atom) + 1; + if (!*arg) { + /* + * Treat empty sub-arguments list as NULL (i.e., + * "%(atom:)" is equivalent to "%(atom)"). + */ + arg = NULL; + } + } memset(&used_atom[at].u, 0, sizeof(used_atom[at].u)); if (valid_atom[i].parser) valid_atom[i].parser(format, &used_atom[at], arg); |