diff options
| author | Lidong Yan <502024330056@smail.nju.edu.cn> | 2025-06-10 00:37:59 +0000 |
|---|---|---|
| committer | Junio C Hamano <gitster@pobox.com> | 2025-06-09 20:41:17 -0700 |
| commit | a3d278bb6457fa33461891a8f0a4ccffaf0f5296 (patch) | |
| tree | 4779e46a733530587537cfa27f5ff2ae1c40052e | |
| parent | CI updates (diff) | |
| download | git-a3d278bb6457fa33461891a8f0a4ccffaf0f5296.tar.gz git-a3d278bb6457fa33461891a8f0a4ccffaf0f5296.zip | |
revision: fix memory leak in prepare_show_merge()
In revision.c:prepare_show_merge(), we allocated an array in prune
but forget to free it. Since parse_pathspec is not responsible to
free prune, we should add `free(prune)` in the end of prepare_show_merge().
Signed-off-by: Lidong Yan <502024330056@smail.nju.edu.cn>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
| -rw-r--r-- | revision.c | 1 | ||||
| -rwxr-xr-x | t/t7007-show.sh | 24 |
2 files changed, 25 insertions, 0 deletions
diff --git a/revision.c b/revision.c index c4390f0938..b5db2d764a 100644 --- a/revision.c +++ b/revision.c @@ -2068,6 +2068,7 @@ static void prepare_show_merge(struct rev_info *revs) parse_pathspec(&revs->prune_data, PATHSPEC_ALL_MAGIC & ~PATHSPEC_LITERAL, PATHSPEC_PREFER_FULL | PATHSPEC_LITERAL_PATH, "", prune); revs->limited = 1; + free(prune); } static int dotdot_missing(const char *arg, char *dotdot, diff --git a/t/t7007-show.sh b/t/t7007-show.sh index d6cc69e0f2..2d322b53d1 100755 --- a/t/t7007-show.sh +++ b/t/t7007-show.sh @@ -167,4 +167,28 @@ test_expect_success 'show --graph is forbidden' ' test_must_fail git show --graph HEAD ' +test_expect_success 'show unmerged index' ' + git reset --hard && + + git switch -C base && + echo "base" >conflicting && + git add conflicting && + git commit -m "base" && + + git branch hello && + git branch goodbye && + + git switch hello && + echo "hello" >conflicting && + git commit -am "hello" && + + git switch goodbye && + echo "goodbye" >conflicting && + git commit -am "goodbye" && + + git switch hello && + test_must_fail git merge goodbye && + git show --merge HEAD +' + test_done |
