aboutsummaryrefslogtreecommitdiffstats
path: root/ui-refs.c
diff options
context:
space:
mode:
authorLukas Fleischer2013-03-04 13:25:33 +0100
committerJason A. Donenfeld2013-03-04 19:55:12 -0500
commit1268afe83692cb8a9ea839ab979d82458da2d03d (patch)
tree6c70b3b3e37ec08a07a93e3f2fa56cfcc77e8178 /ui-refs.c
parent1a5e8633ce3ec7f3a82bc0f4ca5ca810473714b9 (diff)
downloadcgit-1268afe83692cb8a9ea839ab979d82458da2d03d.tar.gz
cgit-1268afe83692cb8a9ea839ab979d82458da2d03d.tar.bz2
cgit-1268afe83692cb8a9ea839ab979d82458da2d03d.zip
Free reflists after usage
Free reflists in cgit_print_branches() and in cgit_print_tags() before returning reflist structures to the stack. This fixes following memory leaks seen with "PATH_INFO=/cgit/refs/": ==5710== 1,312 (32 direct, 1,280 indirect) bytes in 1 blocks are definitely lost in loss record 63 of 71 ==5710== at 0x4C2C04B: malloc (in /usr/lib/valgrind/vgpreload_memcheck-amd64-linux.so) ==5710== by 0x4C2C2FF: realloc (in /usr/lib/valgrind/vgpreload_memcheck-amd64-linux.so) ==5710== by 0x46CA9B: xrealloc (wrapper.c:100) ==5710== by 0x40AAA6: cgit_add_ref (shared.c:156) ==5710== by 0x40ABC4: cgit_refs_cb (shared.c:186) ==5710== by 0x44BCBA: do_one_ref (refs.c:527) ==5710== by 0x44D240: do_for_each_ref_in_dir (refs.c:553) ==5710== by 0x44D6BA: do_for_each_ref (refs.c:1298) ==5710== by 0x410FE2: cgit_print_branches (ui-refs.c:191) ==5710== by 0x4111E9: cgit_print_refs (ui-refs.c:244) ==5710== by 0x407C85: refs_fn (cmd.c:105) ==5710== by 0x405DDF: process_request (cgit.c:566) ==5710== ==5710== 6,846 (256 direct, 6,590 indirect) bytes in 1 blocks are definitely lost in loss record 68 of 71 ==5710== at 0x4C2C25E: realloc (in /usr/lib/valgrind/vgpreload_memcheck-amd64-linux.so) ==5710== by 0x46CA9B: xrealloc (wrapper.c:100) ==5710== by 0x40AAA6: cgit_add_ref (shared.c:156) ==5710== by 0x40ABC4: cgit_refs_cb (shared.c:186) ==5710== by 0x44BCBA: do_one_ref (refs.c:527) ==5710== by 0x44D240: do_for_each_ref_in_dir (refs.c:553) ==5710== by 0x44D6EC: do_for_each_ref (refs.c:1288) ==5710== by 0x4110D5: cgit_print_tags (ui-refs.c:218) ==5710== by 0x4111FD: cgit_print_refs (ui-refs.c:246) ==5710== by 0x407C85: refs_fn (cmd.c:105) ==5710== by 0x405DDF: process_request (cgit.c:566) ==5710== by 0x407490: cache_process (cache.c:322) Signed-off-by: Lukas Fleischer <cgit@cryptocrack.de>
Diffstat (limited to 'ui-refs.c')
-rw-r--r--ui-refs.c4
1 files changed, 4 insertions, 0 deletions
diff --git a/ui-refs.c b/ui-refs.c
index ce06b08..4a9b8d3 100644
--- a/ui-refs.c
+++ b/ui-refs.c
@@ -205,6 +205,8 @@ void cgit_print_branches(int maxcount)
205 205
206 if (maxcount < list.count) 206 if (maxcount < list.count)
207 print_refs_link("heads"); 207 print_refs_link("heads");
208
209 cgit_free_reflist_inner(&list);
208} 210}
209 211
210void cgit_print_tags(int maxcount) 212void cgit_print_tags(int maxcount)
@@ -229,6 +231,8 @@ void cgit_print_tags(int maxcount)
229 231
230 if (maxcount < list.count) 232 if (maxcount < list.count)
231 print_refs_link("tags"); 233 print_refs_link("tags");
234
235 cgit_free_reflist_inner(&list);
232} 236}
233 237
234void cgit_print_refs() 238void cgit_print_refs()