update-ref --stdin: narrow scope of err strbuf
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>
Jonathan Nieder committed
Sep 2, 2014 at 14:10 UTC
ab5ac95725f7a4f36f72be48f340a84e46996e90
1 file changed
+10
-1
builtin/update-ref.c
+10
-1
@@ -16,7 +16,6 @@ static struct ref_transaction *transaction;
16
17
static char line_termination = '\n';
18
static int update_flags;
19
-static struct strbuf err = STRBUF_INIT;
19
20
/*
21
* Parse one whitespace- or NUL-terminated, possibly C-quoted argument
@@ -179,6 +178,7 @@ static int parse_next_sha1(struct strbuf *input, const char **next,
178
179
static const char *parse_cmd_update(struct strbuf *input, const char *next)
180
{
181
+ struct strbuf err = STRBUF_INIT;
182
char *refname;
183
unsigned char new_sha1[20];
184
unsigned char old_sha1[20];
@@ -204,12 +204,14 @@ static const char *parse_cmd_update(struct strbuf *input, const char *next)
204
205
update_flags = 0;
206
free(refname);
207
+ strbuf_release(&err);
208
209
return next;
210
}
211
212
static const char *parse_cmd_create(struct strbuf *input, const char *next)
213
{
214
+ struct strbuf err = STRBUF_INIT;
215
char *refname;
216
unsigned char new_sha1[20];
217
@@ -232,12 +234,14 @@ static const char *parse_cmd_create(struct strbuf *input, const char *next)
234
235
update_flags = 0;
236
free(refname);
237
+ strbuf_release(&err);
238
239
return next;
240
}
241
242
static const char *parse_cmd_delete(struct strbuf *input, const char *next)
243
{
244
+ struct strbuf err = STRBUF_INIT;
245
char *refname;
246
unsigned char old_sha1[20];
247
int have_old;
@@ -264,12 +268,14 @@ static const char *parse_cmd_delete(struct strbuf *input, const char *next)
268
269
update_flags = 0;
270
free(refname);
271
+ strbuf_release(&err);
272
273
return next;
274
}
275
276
static const char *parse_cmd_verify(struct strbuf *input, const char *next)
277
{
278
+ struct strbuf err = STRBUF_INIT;
279
char *refname;
280
unsigned char new_sha1[20];
281
unsigned char old_sha1[20];
@@ -297,6 +303,7 @@ static const char *parse_cmd_verify(struct strbuf *input, const char *next)
303
304
update_flags = 0;
305
free(refname);
306
+ strbuf_release(&err);
307
308
return next;
309
}
@@ -365,6 +372,8 @@ int cmd_update_ref(int argc, const char **argv, const char *prefix)
372
die("Refusing to perform update with empty message.");
373
374
if (read_stdin) {
375
+ struct strbuf err = STRBUF_INIT;
376
+
377
transaction = ref_transaction_begin(&err);
378
if (!transaction)
379
die("%s", err.buf);