summaryrefslogtreecommitdiff
path: root/branch.c
diff options
context:
space:
mode:
authorJeff King <peff@peff.net>2017-03-28 15:46:40 -0400
committerJunio C Hamano <gitster@pobox.com>2017-03-30 14:59:50 -0700
commitcddac45219b70f121d30468811a9fbee78fa24f2 (patch)
tree6f0f57c9b801b94cb310c7d8142b73652213c662 /branch.c
parent3818b258dc145aae25c48cf4fca830be0cb69c6e (diff)
downloadgit-cddac45219b70f121d30468811a9fbee78fa24f2.tar.gz
create_branch: use xstrfmt for reflog message
We generate a reflog message that contains some fixed text plus a branch name, and use a buffer of size PATH_MAX + 20. This mostly works if you assume that refnames are shorter than PATH_MAX, but: 1. That's not necessarily true. PATH_MAX is not always the filesystem's limit. 2. The "20" is not sufficiently large for the fixed text anyway. Let's just switch to a heap buffer so we don't have to even care. Signed-off-by: Jeff King <peff@peff.net>
Diffstat (limited to 'branch.c')
-rw-r--r--branch.c9
1 files changed, 4 insertions, 5 deletions
diff --git a/branch.c b/branch.c
index 6d0ca94cc7..ad5a2299ba 100644
--- a/branch.c
+++ b/branch.c
@@ -296,14 +296,12 @@ void create_branch(const char *name, const char *start_name,
if (!dont_change_ref) {
struct ref_transaction *transaction;
struct strbuf err = STRBUF_INIT;
- char msg[PATH_MAX + 20];
+ char *msg;
if (forcing)
- snprintf(msg, sizeof msg, "branch: Reset to %s",
- start_name);
+ msg = xstrfmt("branch: Reset to %s", start_name);
else
- snprintf(msg, sizeof msg, "branch: Created from %s",
- start_name);
+ msg = xstrfmt("branch: Created from %s", start_name);
transaction = ref_transaction_begin(&err);
if (!transaction ||
@@ -314,6 +312,7 @@ void create_branch(const char *name, const char *start_name,
die("%s", err.buf);
ref_transaction_free(transaction);
strbuf_release(&err);
+ free(msg);
}
if (real_ref && track)