Re: [PATCH 2.5/4] diff: avoid returning a struct by value from diff_flags_or()
- From
- Brandon Williams <bmwill@google.com>
- Date
- Oct 31, 2017, 17:51 UTC
- Message-ID
- <20171031175119.GB94048@google.com>
- In-Reply-To
- <xmqqo9on28mf.fsf@gitster.mtv.corp.google.com>
On 10/31, Junio C Hamano wrote:
> That is more in line with the design decision made in the previous > step to pass struct by reference. > > We may want to squash this into the previous patch eventually.
Looks good to me. I was on the fence with what to do since I was already moving to pass by reference. This is probably the better move so I can squash this one into the previous.
Show 56 quoted lines
>
> Signed-off-by: Junio C Hamano <gitster@pobox.com>
> ---
>
> * I am OK either way as long as things are consistent; as you took
> time to change the code to pass the struct by reference, let's
> unify the API in that direction.
>
> diff-lib.c | 2 +-
> diff.h | 12 ++++--------
> 2 files changed, 5 insertions(+), 9 deletions(-)
>
> diff --git a/diff-lib.c b/diff-lib.c
> index 6c1c05c5b0..ed37f24c68 100644
> --- a/diff-lib.c
> +++ b/diff-lib.c
> @@ -547,7 +547,7 @@ int index_differs_from(const char *def, const struct diff_flags *flags,
> DIFF_OPT_SET(&rev.diffopt, QUICK);
> DIFF_OPT_SET(&rev.diffopt, EXIT_WITH_STATUS);
> if (flags)
> - rev.diffopt.flags = diff_flags_or(&rev.diffopt.flags, flags);
> + diff_flags_or(&rev.diffopt.flags, flags);
> rev.diffopt.ita_invisible_in_index = ita_invisible_in_index;
> run_diff_index(&rev, 1);
> object_array_clear(&rev.pending);
> diff --git a/diff.h b/diff.h
> index 47e6d43cbc..e512cf44d0 100644
> --- a/diff.h
> +++ b/diff.h
> @@ -94,19 +94,15 @@ struct diff_flags {
> unsigned DEFAULT_FOLLOW_RENAMES:1;
> };
>
> -static inline struct diff_flags diff_flags_or(const struct diff_flags *a,
> - const struct diff_flags *b)
> +static inline void diff_flags_or(struct diff_flags *a,
> + const struct diff_flags *b)
> {
> - struct diff_flags out;
> char *tmp_a = (char *)a;
> - char *tmp_b = (char *)b;
> - char *tmp_out = (char *)&out;
> + const char *tmp_b = (const char *)b;
> int i;
>
> for (i = 0; i < sizeof(struct diff_flags); i++)
> - tmp_out[i] = tmp_a[i] | tmp_b[i];
> -
> - return out;
> + tmp_a[i] |= tmp_b[i];
> }
>
> #define DIFF_OPT_TST(opts, flag) ((opts)->flags.flag)
> --
> 2.15.0-224-g5109123e6a
> -- Brandon Williams