summary refs log tree commit diff
path: root/list-objects-filter-options.c
diff options
context:
space:
mode:
authorMatthew DeVore <matvore@google.com>2019-06-27 15:54:13 -0700
committerJunio C Hamano <gitster@pobox.com>2019-06-28 08:41:53 -0700
commit5a133e8a7f7c28c57f7a0a85e57692b8b781d896 (patch)
tree4c044c67cdbaec4319a55cfcffc0db548e7c4cf7 /list-objects-filter-options.c
parent489fc9ee718b7c8594f17b55f090ac5292c655e1 (diff)
list-objects-filter-options: clean up use of ALLOC_GROW
Introduce a new macro ALLOC_GROW_BY which automatically zeros the added
array elements and takes care of updating the nr value. Use the macro in
code introduced earlier in this patchset.

Signed-off-by: Matthew DeVore <matvore@google.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
Diffstat (limited to 'list-objects-filter-options.c')
-rw-r--r--list-objects-filter-options.c17
1 files changed, 7 insertions, 10 deletions
diff --git a/list-objects-filter-options.c b/list-objects-filter-options.c
index 2506dc8327..44bc1153d1 100644
--- a/list-objects-filter-options.c
+++ b/list-objects-filter-options.c
@@ -120,14 +120,12 @@ static int parse_combine_subfilter(
 	struct strbuf *subspec,
 	struct strbuf *errbuf)
 {
-	size_t new_index = filter_options->sub_nr++;
+	size_t new_index = filter_options->sub_nr;
 	char *decoded;
 	int result;
 
-	ALLOC_GROW(filter_options->sub, filter_options->sub_nr,
-		   filter_options->sub_alloc);
-	memset(&filter_options->sub[new_index], 0,
-	       sizeof(*filter_options->sub));
+	ALLOC_GROW_BY(filter_options->sub, filter_options->sub_nr, 1,
+		      filter_options->sub_alloc);
 
 	decoded = url_percent_decode(subspec->buf);
 
@@ -255,13 +253,12 @@ int parse_list_objects_filter(
 
 		string_list_append(&filter_options->filter_spec, xstrdup("+"));
 		filter_spec_append_urlencode(filter_options, arg);
-		ALLOC_GROW(filter_options->sub, filter_options->sub_nr + 1,
-			   filter_options->sub_alloc);
-		filter_options = &filter_options->sub[filter_options->sub_nr++];
-		memset(filter_options, 0, sizeof(*filter_options));
+		ALLOC_GROW_BY(filter_options->sub, filter_options->sub_nr, 1,
+			      filter_options->sub_alloc);
 
 		parse_error = gently_parse_list_objects_filter(
-			filter_options, arg, &errbuf);
+			&filter_options->sub[filter_options->sub_nr - 1], arg,
+			&errbuf);
 	}
 	if (parse_error)
 		die("%s", errbuf.buf);