aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--rerere.c16
1 files changed, 9 insertions, 7 deletions
diff --git a/rerere.c b/rerere.c
index 576361fb0..d8518a450 100644
--- a/rerere.c
+++ b/rerere.c
@@ -65,16 +65,18 @@ static int write_rr(struct string_list *rr, int out_fd)
{
int i;
for (i = 0; i < rr->nr; i++) {
- const char *path;
- int length;
+ struct strbuf buf = STRBUF_INIT;
+
+ assert(rr->items[i].util != RERERE_RESOLVED);
if (!rr->items[i].util)
continue;
- path = rr->items[i].string;
- length = strlen(path) + 1;
- if (write_in_full(out_fd, rr->items[i].util, 40) != 40 ||
- write_str_in_full(out_fd, "\t") != 1 ||
- write_in_full(out_fd, path, length) != length)
+ strbuf_addf(&buf, "%s\t%s%c",
+ (char *)rr->items[i].util,
+ rr->items[i].string, 0);
+ if (write_in_full(out_fd, buf.buf, buf.len) != buf.len)
die("unable to write rerere record");
+
+ strbuf_release(&buf);
}
if (commit_lock_file(&write_lock) != 0)
die("unable to write rerere record");