Re: [PATCH 1/2] add -p: use ALLOC_GROW_BY instead of ALLOW_GROW
- From
Junio C Hamano <gitster@pobox.com>
- Date
- Aug 17, 2020, 18:35 UTC
- Message-ID
- <xmqqy2md15pe.fsf@gitster.c.googlers.com>
- In-Reply-To
- <ae6ace43af9b25ee8f67b01ed1ec50064c8b006f.1597670589.git.gitgitgadget@gmail.com>
"Phillip Wood via GitGitGadget" <gitgitgadget@gmail.com> writes:
> From: Phillip Wood <phillip.wood@dunelm.org.uk> > > This simplifies the code slightly, especially the third case where > hunk_nr was incremented a few lines before ALLOC_GROW().
OK, we lose memset()s that appear to be separate but is a part of adding more elements. Makes sense.
Show 56 quoted lines
>
> Signed-off-by: Phillip Wood <phillip.wood@dunelm.org.uk>
> ---
> add-patch.c | 13 ++++---------
> 1 file changed, 4 insertions(+), 9 deletions(-)
>
> diff --git a/add-patch.c b/add-patch.c
> index f899389e2c..a15fa407be 100644
> --- a/add-patch.c
> +++ b/add-patch.c
> @@ -457,11 +457,9 @@ static int parse_diff(struct add_p_state *s, const struct pathspec *ps)
> eol = pend;
>
> if (starts_with(p, "diff ")) {
> - s->file_diff_nr++;
> - ALLOC_GROW(s->file_diff, s->file_diff_nr,
> + ALLOC_GROW_BY(s->file_diff, s->file_diff_nr, 1,
> file_diff_alloc);
> file_diff = s->file_diff + s->file_diff_nr - 1;
> - memset(file_diff, 0, sizeof(*file_diff));
> hunk = &file_diff->head;
> hunk->start = p - plain->buf;
> if (colored_p)
> @@ -483,11 +481,9 @@ static int parse_diff(struct add_p_state *s, const struct pathspec *ps)
> */
> hunk->splittable_into++;
>
> - file_diff->hunk_nr++;
> - ALLOC_GROW(file_diff->hunk, file_diff->hunk_nr,
> + ALLOC_GROW_BY(file_diff->hunk, file_diff->hunk_nr, 1,
> file_diff->hunk_alloc);
> hunk = file_diff->hunk + file_diff->hunk_nr - 1;
> - memset(hunk, 0, sizeof(*hunk));
>
> hunk->start = p - plain->buf;
> if (colored)
> @@ -511,7 +507,7 @@ static int parse_diff(struct add_p_state *s, const struct pathspec *ps)
> if (file_diff->mode_change)
> BUG("double mode change?\n\n%.*s",
> (int)(eol - plain->buf), plain->buf);
> - if (file_diff->hunk_nr++)
> + if (file_diff->hunk_nr)
> BUG("mode change in the middle?\n\n%.*s",
> (int)(eol - plain->buf), plain->buf);
>
> @@ -520,9 +516,8 @@ static int parse_diff(struct add_p_state *s, const struct pathspec *ps)
> * is _part of_ the header "hunk".
> */
> file_diff->mode_change = 1;
> - ALLOC_GROW(file_diff->hunk, file_diff->hunk_nr,
> + ALLOC_GROW_BY(file_diff->hunk, file_diff->hunk_nr, 1,
> file_diff->hunk_alloc);
> - memset(file_diff->hunk, 0, sizeof(struct hunk));
> file_diff->hunk->start = p - plain->buf;
> if (colored_p)
> file_diff->hunk->colored_start =