diff options
author | Heiko Voigt <hvoigt@hvoigt.net> | 2019-05-06 11:39:51 +0200 |
---|---|---|
committer | Heiko Voigt <hvoigt@hvoigt.net> | 2019-05-10 12:27:47 +0200 |
commit | 6990a4926161d668560968b8c75f9d7c3d180737 (patch) | |
tree | fca0050f9dcbb6fe76a0dc6d4d4a9720753d49b1 | |
parent | d55bb479ddad2e8feaed7bf3e1773cf344db108c (diff) | |
download | libgit2-6990a4926161d668560968b8c75f9d7c3d180737.tar.gz |
revwalk: fix memory leak in error handling
This is not implemented and should fail, but it should also not leak. To
allow the memory debugger to find leaks and fix this one we test this.
-rw-r--r-- | src/revwalk.c | 3 | ||||
-rw-r--r-- | tests/revwalk/basic.c | 9 |
2 files changed, 11 insertions, 1 deletions
diff --git a/src/revwalk.c b/src/revwalk.c index 9428cc6c0..7bb29110c 100644 --- a/src/revwalk.c +++ b/src/revwalk.c @@ -203,7 +203,8 @@ int git_revwalk_push_range(git_revwalk *walk, const char *range) if (revspec.flags & GIT_REVPARSE_MERGE_BASE) { /* TODO: support "<commit>...<commit>" */ git_error_set(GIT_ERROR_INVALID, "symmetric differences not implemented in revwalk"); - return GIT_EINVALIDSPEC; + error = GIT_EINVALIDSPEC; + goto out; } if ((error = push_commit(walk, git_object_id(revspec.from), 1, false))) diff --git a/tests/revwalk/basic.c b/tests/revwalk/basic.c index 24dd6f875..ee70ec635 100644 --- a/tests/revwalk/basic.c +++ b/tests/revwalk/basic.c @@ -400,6 +400,15 @@ void test_revwalk_basic__push_range(void) cl_git_pass(test_walk_only(_walk, commit_sorting_segment, 2)); } +void test_revwalk_basic__push_range_merge_base(void) +{ + revwalk_basic_setup_walk(NULL); + + git_revwalk_reset(_walk); + git_revwalk_sorting(_walk, 0); + cl_git_fail_with(GIT_EINVALIDSPEC, git_revwalk_push_range(_walk, "HEAD...HEAD~2")); +} + void test_revwalk_basic__push_range_no_range(void) { revwalk_basic_setup_walk(NULL); |