summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJeff King <peff@peff.net>2017-03-28 15:46:36 -0400
committerJunio C Hamano <gitster@pobox.com>2017-03-30 14:59:50 -0700
commit3818b258dc145aae25c48cf4fca830be0cb69c6e (patch)
treee28436a6dd1946d7dab8a3c473e1a3da9b20e71b
parent6cd4a8982dbde0b6fee26faba2873c475af50a28 (diff)
downloadgit-3818b258dc145aae25c48cf4fca830be0cb69c6e.tar.gz
create_branch: move msg setup closer to point of use
In create_branch() we write the reflog msg into a buffer in the main function, but then use it only inside a conditional. If you carefully follow the logic, you can confirm that we never use the buffer uninitialized nor write when it would not be used. But we can make this a lot more obvious by simply moving the write step inside the conditional. Signed-off-by: Jeff King <peff@peff.net>
-rw-r--r--branch.c17
1 files changed, 9 insertions, 8 deletions
diff --git a/branch.c b/branch.c
index 5c12036b02..6d0ca94cc7 100644
--- a/branch.c
+++ b/branch.c
@@ -234,7 +234,7 @@ void create_branch(const char *name, const char *start_name,
{
struct commit *commit;
unsigned char sha1[20];
- char *real_ref, msg[PATH_MAX + 20];
+ char *real_ref;
struct strbuf ref = STRBUF_INIT;
int forcing = 0;
int dont_change_ref = 0;
@@ -290,19 +290,20 @@ void create_branch(const char *name, const char *start_name,
die(_("Not a valid branch point: '%s'."), start_name);
hashcpy(sha1, commit->object.oid.hash);
- if (forcing)
- snprintf(msg, sizeof msg, "branch: Reset to %s",
- start_name);
- else if (!dont_change_ref)
- snprintf(msg, sizeof msg, "branch: Created from %s",
- start_name);
-
if (reflog)
log_all_ref_updates = LOG_REFS_NORMAL;
if (!dont_change_ref) {
struct ref_transaction *transaction;
struct strbuf err = STRBUF_INIT;
+ char msg[PATH_MAX + 20];
+
+ if (forcing)
+ snprintf(msg, sizeof msg, "branch: Reset to %s",
+ start_name);
+ else
+ snprintf(msg, sizeof msg, "branch: Created from %s",
+ start_name);
transaction = ref_transaction_begin(&err);
if (!transaction ||