Re: [PATCH v2 2/3] pretty.c: capture invalid trailer argument
- From
Junio C Hamano <gitster@pobox.com>
- Date
- Jan 30, 2021, 00:01 UTC
- Message-ID
- <xmqqsg6jqomc.fsf@gitster.c.googlers.com>
- In-Reply-To
- <245e48eb6835cae4e61f65af780b766d990d4b5f.1611954543.git.gitgitgadget@gmail.com>
"Hariom Verma via GitGitGadget" <gitgitgadget@gmail.com> writes:
> + size_t invalid_arg_len = strcspn(*arg, ",)"); > + *invalid_arg = xstrndup(*arg, invalid_arg_len); > + return 1;
How about doing this only when invalid_arg is not NULL, i.e.
} else if (!match_placeholder_bool_arg(....) &&
...
!match_placeholder_bool_arg(....)) {
if (invalid_arg) {
size_t len = strcspn(*arg, ",)");
*invalid_arg = xstrndup(*arg, len);
}
return -1;
}Note that I just used 'len'; when the scope of a variable is so short, it is clear the length of what thing it refers to from the context, and there is no point in using a variable name that long.
In any case, by doing so, the callers that are not interested in the report can just pass NULL, which means ...
Show 5 quoted lines
> @@ -1464,12 +1472,13 @@ static size_t format_commit_one(struct strbuf *sb, /* in UTF-8 */ > struct strbuf sepbuf = STRBUF_INIT; > struct strbuf kvsepbuf = STRBUF_INIT; > size_t ret = 0; > + char *unused = NULL;
... this will become unneeded, and ...
Show 7 quoted lines
> opts.no_divider = 1;
>
> if (*arg == ':') {
> arg++;
> - if (format_set_trailers_options(&opts, &filter_list, &sepbuf, &kvsepbuf, &arg))
> + if (format_set_trailers_options(&opts, &filter_list, &sepbuf, &kvsepbuf, &arg, &unused))
> goto trailer_out;... this will pass NULL, and ...
Show 7 quoted lines
> }
> if (*arg == ')') {
> @@ -1479,6 +1488,7 @@ static size_t format_commit_one(struct strbuf *sb, /* in UTF-8 */
> trailer_out:
> string_list_clear(&filter_list, 0);
> strbuf_release(&sepbuf);
> + free((char *)unused);... this will become unneeded.
Show 16 quoted lines
> return ret; > } > > diff --git a/pretty.h b/pretty.h > index 7369cf7e148..d902cdd70a9 100644 > --- a/pretty.h > +++ b/pretty.h > @@ -151,6 +151,7 @@ int format_set_trailers_options(struct process_trailer_options *opts, > struct string_list *filter_list, > struct strbuf *sepbuf, > struct strbuf *kvsepbuf, > - const char **arg); > + const char **arg, > + char **invalid_arg); > > #endif /* PRETTY_H */