summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJunio C Hamano <junkio@cox.net>2005-09-14 14:06:50 -0700
committerJunio C Hamano <junkio@cox.net>2005-09-14 14:06:50 -0700
commit19397b4521bcc27eb224413fb71519223b94290f (patch)
tree457823789014c2986aee9379f936d7025b54dad1
parent705a7148ba1bb9597b1837b7f64a0dcb67f1ad0c (diff)
downloadgit-19397b4521bcc27eb224413fb71519223b94290f.tar.gz
Revert "[PATCH] plug memory leak in diff.c::diff_free_filepair()"
This reverts 068eac91ce04b9aca163acb1927c3878c45d1a07 commit.
-rw-r--r--diff.c9
-rw-r--r--diffcore-break.c4
-rw-r--r--diffcore.h2
3 files changed, 8 insertions, 7 deletions
diff --git a/diff.c b/diff.c
index 1059049fb9..05a0663d4d 100644
--- a/diff.c
+++ b/diff.c
@@ -402,13 +402,14 @@ int diff_populate_filespec(struct diff_filespec *s, int size_only)
return 0;
}
-void diff_free_filespec(struct diff_filespec *s)
+void diff_free_filespec_data(struct diff_filespec *s)
{
if (s->should_free)
free(s->data);
else if (s->should_munmap)
munmap(s->data, s->size);
- free(s);
+ s->should_free = s->should_munmap = 0;
+ s->data = NULL;
}
static void prep_temp_blob(struct diff_tempfile *temp,
@@ -767,8 +768,8 @@ struct diff_filepair *diff_queue(struct diff_queue_struct *queue,
void diff_free_filepair(struct diff_filepair *p)
{
- diff_free_filespec(p->one);
- diff_free_filespec(p->two);
+ diff_free_filespec_data(p->one);
+ diff_free_filespec_data(p->two);
free(p);
}
diff --git a/diffcore-break.c b/diffcore-break.c
index b0c8461e12..06f9a7f0ee 100644
--- a/diffcore-break.c
+++ b/diffcore-break.c
@@ -231,8 +231,8 @@ static void merge_broken(struct diff_filepair *p,
dp = diff_queue(outq, d->one, c->two);
dp->score = p->score;
- diff_free_filespec(d->two);
- diff_free_filespec(c->one);
+ diff_free_filespec_data(d->two);
+ diff_free_filespec_data(c->one);
free(d);
free(c);
}
diff --git a/diffcore.h b/diffcore.h
index 633d1ae5cf..f1b5ca748c 100644
--- a/diffcore.h
+++ b/diffcore.h
@@ -43,7 +43,7 @@ extern void fill_filespec(struct diff_filespec *, const unsigned char *,
unsigned short);
extern int diff_populate_filespec(struct diff_filespec *, int);
-extern void diff_free_filespec(struct diff_filespec *);
+extern void diff_free_filespec_data(struct diff_filespec *);
struct diff_filepair {
struct diff_filespec *one;