Michael Haggerty <[email protected]> writes:
> Signed-off-by: Michael Haggerty <[email protected]>
> ---
> refs.c | 15 ++++++---------
> 1 file changed, 6 insertions(+), 9 deletions(-)
>
> diff --git a/refs.c b/refs.c
> index d72d0ab..2b80f6d 100644
> --- a/refs.c
> +++ b/refs.c
> @@ -3274,11 +3274,11 @@ static int update_ref_write(const char *action, const
> char *refname,
> * value or to zero to ensure the ref does not exist before update.
> */
> struct ref_update {
> - const char *refname;
> unsigned char new_sha1[20];
> unsigned char old_sha1[20];
> int flags; /* REF_NODEREF? */
> int have_old; /* 1 if old_sha1 is valid, 0 otherwise */
> + const char refname[FLEX_ARRAY];
> };
Yeah, as we no longer borrow a pointer but make our own copy since
the earlier patch in the series, this perfectly makes sense.
>
> /*
> @@ -3301,12 +3301,8 @@ static void ref_transaction_free(struct
> ref_transaction *transaction)
> {
> int i;
>
> - for (i = 0; i < transaction->nr; i++) {
> - struct ref_update *update = transaction->updates[i];
> -
> - free((char *)update->refname);
> - free(update);
> - }
> + for (i = 0; i < transaction->nr; i++)
> + free(transaction->updates[i]);
>
> free(transaction->updates);
> free(transaction);
> @@ -3320,9 +3316,10 @@ void ref_transaction_rollback(struct ref_transaction
> *transaction)
> static struct ref_update *add_update(struct ref_transaction *transaction,
> const char *refname)
> {
> - struct ref_update *update = xcalloc(1, sizeof(*update));
> + size_t len = strlen(refname);
> + struct ref_update *update = xcalloc(1, sizeof(*update) + len + 1);
>
> - update->refname = xstrdup(refname);
> + strcpy((char *)update->refname, refname);
> ALLOC_GROW(transaction->updates, transaction->nr + 1,
> transaction->alloc);
> transaction->updates[transaction->nr++] = update;
> return update;
--
To unsubscribe from this list: send the line "unsubscribe git" in
the body of a message to [email protected]
More majordomo info at http://vger.kernel.org/majordomo-info.html