On 04/17/2014 09:46 PM, Ronnie Sahlberg wrote: > Do basic error checking in ref_transaction_create() and make it return > status. Update all callers to check the result of ref_transaction_create() > > Signed-off-by: Ronnie Sahlberg <sahlberg@xxxxxxxxxx> > --- > builtin/update-ref.c | 4 +++- > refs.c | 17 +++++++++++------ > refs.h | 8 ++++---- > 3 files changed, 18 insertions(+), 11 deletions(-) > > diff --git a/builtin/update-ref.c b/builtin/update-ref.c > index 12bfacc..1b8a087 100644 > --- a/builtin/update-ref.c > +++ b/builtin/update-ref.c > @@ -226,7 +226,9 @@ static const char *parse_cmd_create(struct strbuf *input, const char *next) > if (*next != line_termination) > die("create %s: extra input: %s", refname, next); > > - ref_transaction_create(transaction, refname, new_sha1, update_flags); > + if(ref_transaction_create(transaction, refname, new_sha1, > + update_flags)) Space between "if" and opening parenthesis. > + die("failed transaction create for %s", refname); > > update_flags = 0; > free(refname); > diff --git a/refs.c b/refs.c > index da1761d..c46249f 100644 > --- a/refs.c > +++ b/refs.c > @@ -3347,18 +3347,23 @@ int ref_transaction_update(struct ref_transaction *transaction, > return 0; > } > > -void ref_transaction_create(struct ref_transaction *transaction, > - const char *refname, > - const unsigned char *new_sha1, > - int flags) > +int ref_transaction_create(struct ref_transaction *transaction, > + const char *refname, > + const unsigned char *new_sha1, > + int flags) > { > - struct ref_update *update = add_update(transaction, refname); > + struct ref_update *update; > + > + if (!new_sha1 || is_null_sha1(new_sha1)) > + return error("create ref with null new_sha1"); Please die("BUG: ..."). > + > + update = add_update(transaction, refname); > > - assert(!is_null_sha1(new_sha1)); > hashcpy(update->new_sha1, new_sha1); > hashclr(update->old_sha1); > update->flags = flags; > update->have_old = 1; > + return 0; > } > > void ref_transaction_delete(struct ref_transaction *transaction, > diff --git a/refs.h b/refs.h > index 00e4f7b..8799e15 100644 > --- a/refs.h > +++ b/refs.h > @@ -249,10 +249,10 @@ int ref_transaction_update(struct ref_transaction *transaction, > * null SHA-1. It is verified that the reference does not exist > * already. > */ > -void ref_transaction_create(struct ref_transaction *transaction, > - const char *refname, > - const unsigned char *new_sha1, > - int flags); > +int ref_transaction_create(struct ref_transaction *transaction, > + const char *refname, > + const unsigned char *new_sha1, > + int flags); > > /* > * Add a reference deletion to transaction. If have_old is true, then > Michael -- Michael Haggerty mhagger@xxxxxxxxxxxx http://softwareswirl.blogspot.com/ -- To unsubscribe from this list: send the line "unsubscribe git" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html