aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJohn Keeping2022-02-13 15:34:50 +0000
committerYigit Sever2023-07-21 03:03:51 +0300
commitd4d0a488eb6f9456df2fa7fc9348c5076ee7dfab (patch)
tree96f7f7aa09047ea99e12d35bf5bd76555b7583d0
parent443ec893ab98238a6327a40e61633a53ab95b86c (diff)
downloadcgit-d4d0a488eb6f9456df2fa7fc9348c5076ee7dfab.tar.gz
cgit-d4d0a488eb6f9456df2fa7fc9348c5076ee7dfab.tar.bz2
cgit-d4d0a488eb6f9456df2fa7fc9348c5076ee7dfab.zip
global: use release_commit_memory()
Instead of calling two separate Git functions to free memory associated with a commit object, use Git's wrapper which does this. This also counts as a potential future bug fix since release_commit_memory() also resets the parsed state of the commit, meaning any attempt to use it in the future will correctly fill out the fields again. release_commit_memory() does not set parents to zero, so keep that for additional safety in case CGit checks this without calling parse_commit() again. Signed-off-by: John Keeping <john@keeping.me.uk> Signed-off-by: Jason A. Donenfeld <Jason@zx2c4.com>
-rw-r--r--ui-atom.c3
-rw-r--r--ui-log.c6
-rw-r--r--ui-stats.c3
3 files changed, 4 insertions, 8 deletions
diff --git a/ui-atom.c b/ui-atom.c
index 541660d..5f4ad7d 100644
--- a/ui-atom.c
+++ b/ui-atom.c
@@ -149,8 +149,7 @@ void cgit_print_atom(char *tip, const char *path, int max_count)
149 first = false; 149 first = false;
150 } 150 }
151 add_entry(commit, host); 151 add_entry(commit, host);
152 free_commit_buffer(the_repository->parsed_objects, commit); 152 release_commit_memory(the_repository->parsed_objects, commit);
153 free_commit_list(commit->parents);
154 commit->parents = NULL; 153 commit->parents = NULL;
155 } 154 }
156 html("</feed>\n"); 155 html("</feed>\n");
diff --git a/ui-log.c b/ui-log.c
index 29a99a3..2a02689 100644
--- a/ui-log.c
+++ b/ui-log.c
@@ -489,8 +489,7 @@ void cgit_print_log(const char *tip, int ofs, int cnt, char *grep, char *pattern
489 for (i = 0; i < ofs && (commit = get_revision(&rev)) != NULL; /* nop */) { 489 for (i = 0; i < ofs && (commit = get_revision(&rev)) != NULL; /* nop */) {
490 if (show_commit(commit, &rev)) 490 if (show_commit(commit, &rev))
491 i++; 491 i++;
492 free_commit_buffer(the_repository->parsed_objects, commit); 492 release_commit_memory(the_repository->parsed_objects, commit);
493 free_commit_list(commit->parents);
494 commit->parents = NULL; 493 commit->parents = NULL;
495 } 494 }
496 495
@@ -511,8 +510,7 @@ void cgit_print_log(const char *tip, int ofs, int cnt, char *grep, char *pattern
511 i++; 510 i++;
512 print_commit(commit, &rev); 511 print_commit(commit, &rev);
513 } 512 }
514 free_commit_buffer(the_repository->parsed_objects, commit); 513 release_commit_memory(the_repository->parsed_objects, commit);
515 free_commit_list(commit->parents);
516 commit->parents = NULL; 514 commit->parents = NULL;
517 } 515 }
518 if (pager) { 516 if (pager) {
diff --git a/ui-stats.c b/ui-stats.c
index 8b7e70c..6d0296d 100644
--- a/ui-stats.c
+++ b/ui-stats.c
@@ -241,8 +241,7 @@ static struct string_list collect_stats(const struct cgit_period *period)
241 memset(&authors, 0, sizeof(authors)); 241 memset(&authors, 0, sizeof(authors));
242 while ((commit = get_revision(&rev)) != NULL) { 242 while ((commit = get_revision(&rev)) != NULL) {
243 add_commit(&authors, commit, period); 243 add_commit(&authors, commit, period);
244 free_commit_buffer(the_repository->parsed_objects, commit); 244 release_commit_memory(the_repository->parsed_objects, commit);
245 free_commit_list(commit->parents);
246 commit->parents = NULL; 245 commit->parents = NULL;
247 } 246 }
248 return authors; 247 return authors;