diff options
-rw-r--r-- | src/revwalk.c | 6 | ||||
-rw-r--r-- | tests/revwalk/basic.c | 9 |
2 files changed, 15 insertions, 0 deletions
diff --git a/src/revwalk.c b/src/revwalk.c index 6d12d34eb..9428cc6c0 100644 --- a/src/revwalk.c +++ b/src/revwalk.c @@ -194,6 +194,12 @@ int git_revwalk_push_range(git_revwalk *walk, const char *range) if ((error = git_revparse(&revspec, walk->repo, range))) return error; + if (!revspec.to) { + git_error_set(GIT_ERROR_INVALID, "invalid revspec. Only range supported."); + error = GIT_EINVALIDSPEC; + goto out; + } + if (revspec.flags & GIT_REVPARSE_MERGE_BASE) { /* TODO: support "<commit>...<commit>" */ git_error_set(GIT_ERROR_INVALID, "symmetric differences not implemented in revwalk"); diff --git a/tests/revwalk/basic.c b/tests/revwalk/basic.c index 8e7302552..24dd6f875 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_no_range(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")); +} + void test_revwalk_basic__push_mixed(void) { git_oid oid; |