[PATCH v2 12/22] builtin/fast-export: fix leaking diff options
- From
Patrick Steinhardt <ps@pks.im>
- Date
- Aug 8, 2024, 13:05 UTC
- Message-ID
- <fa2d5c5d6b7b9018c3271a3c955852d1aeaf44d9.1723121979.git.ps@pks.im>
- In-Reply-To
- <cover.1723121979.git.ps@pks.im>
Before caling `handle_commit()` in a loop, we set `diffopt.no_free` such that its contents aren't getting freed inside of `handle_commit()`. We never unset that flag though, which means that it'll ultimately leak when calling `release_revisions()`.
Fix this by unsetting the flag after the loop.
Signed-off-by: Patrick Steinhardt <ps@pks.im> --- builtin/fast-export.c | 2 ++ 1 file changed, 2 insertions(+)
diff --git a/builtin/fast-export.c b/builtin/fast-export.c index 4b6e8c6832..fe92d2436c 100644 --- a/builtin/fast-export.c +++ b/builtin/fast-export.c @@ -1278,9 +1278,11 @@ int cmd_fast_export(int argc, const char **argv, const char *prefix) revs.diffopt.format_callback = show_filemodify; revs.diffopt.format_callback_data = &paths_of_changed_objects; revs.diffopt.flags.recursive = 1; + revs.diffopt.no_free = 1; while ((commit = get_revision(&revs))) handle_commit(commit, &revs, &paths_of_changed_objects); + revs.diffopt.no_free = 0; handle_tags_and_duplicates(&extra_refs); handle_tags_and_duplicates(&tag_refs);
-- 2.46.0.46.g406f326d27.dirty