diff options
author | Jeff King <peff@peff.net> | 2017-03-28 15:46:40 -0400 |
---|---|---|
committer | Junio C Hamano <gitster@pobox.com> | 2017-03-30 14:59:50 -0700 |
commit | cddac45219b70f121d30468811a9fbee78fa24f2 (patch) | |
tree | 6f0f57c9b801b94cb310c7d8142b73652213c662 | |
parent | 3818b258dc145aae25c48cf4fca830be0cb69c6e (diff) | |
download | git-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>
-rw-r--r-- | branch.c | 9 |
1 files changed, 4 insertions, 5 deletions
@@ -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) |