summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/revwalk.c6
-rw-r--r--tests/revwalk/basic.c9
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;