]> gitweb.ps.run Git - ps-cgit/commitdiff
global: use release_commit_memory()
authorJohn Keeping <john@keeping.me.uk>
Sun, 13 Feb 2022 15:34:50 +0000 (15:34 +0000)
committerJason A. Donenfeld <Jason@zx2c4.com>
Mon, 19 Dec 2022 15:13:58 +0000 (16:13 +0100)
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>
ui-atom.c
ui-log.c
ui-stats.c

index 541660d18654b5ff9cc3231e67301fe97b22c851..5f4ad7df3f90b2cba6b5ae9a8632c42e4173d8c1 100644 (file)
--- a/ui-atom.c
+++ b/ui-atom.c
@@ -149,8 +149,7 @@ void cgit_print_atom(char *tip, const char *path, int max_count)
                        first = false;
                }
                add_entry(commit, host);
-               free_commit_buffer(the_repository->parsed_objects, commit);
-               free_commit_list(commit->parents);
+               release_commit_memory(the_repository->parsed_objects, commit);
                commit->parents = NULL;
        }
        html("</feed>\n");
index 565929f3f046daaf8db1c89fc3d6928c23119ad0..311304ab80abd60fd957d5bf89a5d1a3d5e008d3 100644 (file)
--- 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
        for (i = 0; i < ofs && (commit = get_revision(&rev)) != NULL; /* nop */) {
                if (show_commit(commit, &rev))
                        i++;
-               free_commit_buffer(the_repository->parsed_objects, commit);
-               free_commit_list(commit->parents);
+               release_commit_memory(the_repository->parsed_objects, commit);
                commit->parents = NULL;
        }
 
@@ -511,8 +510,7 @@ void cgit_print_log(const char *tip, int ofs, int cnt, char *grep, char *pattern
                        i++;
                        print_commit(commit, &rev);
                }
-               free_commit_buffer(the_repository->parsed_objects, commit);
-               free_commit_list(commit->parents);
+               release_commit_memory(the_repository->parsed_objects, commit);
                commit->parents = NULL;
        }
        if (pager) {
index 09b3625e7e0cc8e0c13edbf5690f00c9da8ab3a6..40ed6c21df628e178590860f0ef3999d89595331 100644 (file)
@@ -241,8 +241,7 @@ static struct string_list collect_stats(const struct cgit_period *period)
        memset(&authors, 0, sizeof(authors));
        while ((commit = get_revision(&rev)) != NULL) {
                add_commit(&authors, commit, period);
-               free_commit_buffer(the_repository->parsed_objects, commit);
-               free_commit_list(commit->parents);
+               release_commit_memory(the_repository->parsed_objects, commit);
                commit->parents = NULL;
        }
        return authors;