summaryrefslogtreecommitdiff
path: root/src/diff.c
diff options
context:
space:
mode:
authorVicent Marti <tanoku@gmail.com>2012-09-06 10:08:14 +0200
committerVicent Marti <tanoku@gmail.com>2012-09-06 10:08:14 +0200
commit2e4a9ea9cf8cf12199ea17b0aab50219380b8311 (patch)
tree7bccb1732b38799a51e5e99fa1a8cc50839b0c7f /src/diff.c
parent27730eefb9b0b4619006fd7d590bca54c0537090 (diff)
parent510f1bac6b94ce19459498ae78f87fc4f4552305 (diff)
downloadlibgit2-2e4a9ea9cf8cf12199ea17b0aab50219380b8311.tar.gz
Merge remote-tracking branch 'arrbee/diff-iterator' into development
Diffstat (limited to 'src/diff.c')
-rw-r--r--src/diff.c14
1 files changed, 10 insertions, 4 deletions
diff --git a/src/diff.c b/src/diff.c
index 430f52e0a..f8a01086c 100644
--- a/src/diff.c
+++ b/src/diff.c
@@ -316,6 +316,7 @@ static git_diff_list *git_diff_list_alloc(
if (diff == NULL)
return NULL;
+ GIT_REFCOUNT_INC(diff);
diff->repo = repo;
if (git_vector_init(&diff->deltas, 0, diff_delta__cmp) < 0 ||
@@ -391,15 +392,12 @@ fail:
return NULL;
}
-void git_diff_list_free(git_diff_list *diff)
+static void diff_list_free(git_diff_list *diff)
{
git_diff_delta *delta;
git_attr_fnmatch *match;
unsigned int i;
- if (!diff)
- return;
-
git_vector_foreach(&diff->deltas, i, delta) {
git__free(delta);
diff->deltas.contents[i] = NULL;
@@ -416,6 +414,14 @@ void git_diff_list_free(git_diff_list *diff)
git__free(diff);
}
+void git_diff_list_free(git_diff_list *diff)
+{
+ if (!diff)
+ return;
+
+ GIT_REFCOUNT_DEC(diff, diff_list_free);
+}
+
static int oid_for_workdir_item(
git_repository *repo,
const git_index_entry *item,