apply: release memory for fn_table
authorJunio C Hamano <gitster@pobox.com>
Tue, 27 Mar 2012 22:14:48 +0000 (15:14 -0700)
committerJunio C Hamano <gitster@pobox.com>
Tue, 27 Mar 2012 22:40:39 +0000 (15:40 -0700)
The fn_table is used to record the result of earlier patch application in
case a hand-crafted input file contains multiple patches to the same file.
Both its string key (filename) and the contents are borrowed from "struct
patch" that represents the previous application in the same apply_patch()
call, and they do not leak, but the table itself was not freed properly.

Signed-off-by: Junio C Hamano <gitster@pobox.com>
builtin/apply.c

index 04cd8d38b02e2f4771108141da1831220523387b..28668c889a70585825bf24c78105576790a4f018 100644 (file)
@@ -3724,7 +3724,6 @@ static int apply_patch(int fd, const char *filename, int options)
        struct patch *list = NULL, **listp = &list;
        int skipped_patch = 0;
 
-       memset(&fn_table, 0, sizeof(struct string_list));
        patch_input_file = filename;
        read_patch_file(&buf, fd);
        offset = 0;
@@ -3791,6 +3790,7 @@ static int apply_patch(int fd, const char *filename, int options)
 
        free_patch_list(list);
        strbuf_release(&buf);
+       string_list_clear(&fn_table, 0);
        return 0;
 }