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>
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 ||
die("%s", err.buf);
ref_transaction_free(transaction);
strbuf_release(&err);
+ free(msg);
}
if (real_ref && track)