Code

fix textconv leak in emit_rewrite_diff
authorJeff King <peff@peff.net>
Fri, 2 Apr 2010 00:04:14 +0000 (20:04 -0400)
committerJunio C Hamano <gitster@pobox.com>
Fri, 2 Apr 2010 06:49:29 +0000 (23:49 -0700)
We correctly free() for the normal diff case, but leak for
rewrite diffs.

Signed-off-by: Jeff King <peff@peff.net>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
diff.c

diff --git a/diff.c b/diff.c
index 2daa732a360b2e846791156be5ceb33b85b4eac9..db2cd5d35f9de3e7ce74ae36a64f495c82dc836a 100644 (file)
--- a/diff.c
+++ b/diff.c
@@ -550,6 +550,10 @@ static void emit_rewrite_diff(const char *name_a,
                emit_rewrite_lines(&ecbdata, '-', data_one, size_one);
        if (lc_b)
                emit_rewrite_lines(&ecbdata, '+', data_two, size_two);
+       if (textconv_one)
+               free(data_one);
+       if (textconv_two)
+               free(data_two);
 }
 
 struct diff_words_buffer {