diff-index: fix leak The buffer wasn't getting freed if the last difference was a deletion.
diff --git a/src/transports/http.c b/src/transports/http.c
index ce68ab7..38446bd 100644
--- a/src/transports/http.c
+++ b/src/transports/http.c
@@ -71,7 +71,7 @@ static int gen_request(git_buf *buf, const char *url, const char *host, const ch
if (content_length > 0) {
git_buf_printf(buf, "Accept: application/x-git-%s-result\r\n", service);
git_buf_printf(buf, "Content-Type: application/x-git-%s-request\r\n", service);
- git_buf_printf(buf, "Content-Length: %" PRIuZ "\r\n", content_length);
+ git_buf_printf(buf, "Content-Length: %"PRIuZ "\r\n", content_length);
} else {
git_buf_puts(buf, "Accept: */*\r\n");
}
diff --git a/src/tree.c b/src/tree.c
index f214902..373d82b 100644
--- a/src/tree.c
+++ b/src/tree.c
@@ -993,6 +993,7 @@ static int diff_index_cb(const char *root, git_tree_entry *tentry, void *data)
if (!ientry) {
error = signal_deletion(tentry, cbdata->cb, cbdata->data);
+ git_buf_free(&fn_buf);
goto exit;
}