Skip to content

Commit

Permalink
update-ref --stdin: narrow scope of err strbuf
Browse files Browse the repository at this point in the history
Making the strbuf local in each function that needs to print errors
saves the reader from having to think about action at a distance,
such as

 * errors piling up and being concatenated with no newline between
   them
 * errors unhandled in one function, to be later handled in another
 * concurrency issues, if this code starts using threads some day

No functional change intended.

Signed-off-by: Jonathan Nieder <jrnieder@gmail.com>
Reviewed-by: Michael Haggerty <mhagger@alum.mit.edu>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
  • Loading branch information
Jonathan Nieder authored and Junio C Hamano committed Sep 3, 2014
1 parent 7521cc4 commit ab5ac95
Showing 1 changed file with 10 additions and 1 deletion.
11 changes: 10 additions & 1 deletion builtin/update-ref.c
Original file line number Diff line number Diff line change
Expand Up @@ -16,7 +16,6 @@ static struct ref_transaction *transaction;

static char line_termination = '\n';
static int update_flags;
static struct strbuf err = STRBUF_INIT;

/*
* Parse one whitespace- or NUL-terminated, possibly C-quoted argument
Expand Down Expand Up @@ -179,6 +178,7 @@ static int parse_next_sha1(struct strbuf *input, const char **next,

static const char *parse_cmd_update(struct strbuf *input, const char *next)
{
struct strbuf err = STRBUF_INIT;
char *refname;
unsigned char new_sha1[20];
unsigned char old_sha1[20];
Expand All @@ -204,12 +204,14 @@ static const char *parse_cmd_update(struct strbuf *input, const char *next)

update_flags = 0;
free(refname);
strbuf_release(&err);

return next;
}

static const char *parse_cmd_create(struct strbuf *input, const char *next)
{
struct strbuf err = STRBUF_INIT;
char *refname;
unsigned char new_sha1[20];

Expand All @@ -232,12 +234,14 @@ static const char *parse_cmd_create(struct strbuf *input, const char *next)

update_flags = 0;
free(refname);
strbuf_release(&err);

return next;
}

static const char *parse_cmd_delete(struct strbuf *input, const char *next)
{
struct strbuf err = STRBUF_INIT;
char *refname;
unsigned char old_sha1[20];
int have_old;
Expand All @@ -264,12 +268,14 @@ static const char *parse_cmd_delete(struct strbuf *input, const char *next)

update_flags = 0;
free(refname);
strbuf_release(&err);

return next;
}

static const char *parse_cmd_verify(struct strbuf *input, const char *next)
{
struct strbuf err = STRBUF_INIT;
char *refname;
unsigned char new_sha1[20];
unsigned char old_sha1[20];
Expand Down Expand Up @@ -297,6 +303,7 @@ static const char *parse_cmd_verify(struct strbuf *input, const char *next)

update_flags = 0;
free(refname);
strbuf_release(&err);

return next;
}
Expand Down Expand Up @@ -365,6 +372,8 @@ int cmd_update_ref(int argc, const char **argv, const char *prefix)
die("Refusing to perform update with empty message.");

if (read_stdin) {
struct strbuf err = STRBUF_INIT;

transaction = ref_transaction_begin(&err);
if (!transaction)
die("%s", err.buf);
Expand Down

0 comments on commit ab5ac95

Please sign in to comment.