Re: [PATCH v2 2/3] pretty.c: capture invalid trailer argument

2 messages, 2 authors, 2021-01-30 · open the first message on its own page

Re: [PATCH v2 2/3] pretty.c: capture invalid trailer argument

From: Junio C Hamano <hidden>
Date: 2021-01-30 00:02:19

"Hariom Verma via GitGitGadget" [off-list ref] 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 ...
quoted hunk
@@ -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 ...
 		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 ...
quoted hunk
 		}
 		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.
quoted hunk
 		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 */

Re: [PATCH v2 2/3] pretty.c: capture invalid trailer argument

From: Hariom verma <hidden>
Date: 2021-01-30 19:02:06

Hi,

On Sat, Jan 30, 2021 at 5:31 AM Junio C Hamano [off-list ref] wrote:
"Hariom Verma via GitGitGadget" [off-list ref] writes:
quoted
+                     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;
        }
Sounds like an improvement to the current version. Will change.
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 ...
quoted
@@ -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 ...
quoted
              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 ...
quoted
              }
              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.
Thanks,
Hariom Verma
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help