diff options
-rw-r--r-- | rev-parse.c | 19 | ||||
-rw-r--r-- | revision.c | 11 |
2 files changed, 18 insertions, 12 deletions
diff --git a/rev-parse.c b/rev-parse.c index f176c56f7f..e956cd5ed5 100644 --- a/rev-parse.c +++ b/rev-parse.c @@ -315,16 +315,17 @@ int main(int argc, char **argv) dotdot = strstr(arg, ".."); if (dotdot) { unsigned char end[20]; - char *n = dotdot+2; + char *next = dotdot + 2; + char *this = arg; *dotdot = 0; - if (!get_sha1(arg, sha1)) { - if (!*n) - n = "HEAD"; - if (!get_sha1(n, end)) { - show_rev(NORMAL, end, n); - show_rev(REVERSED, sha1, arg); - continue; - } + if (!*next) + next = "HEAD"; + if (dotdot == arg) + this = "HEAD"; + if (!get_sha1(this, sha1) && !get_sha1(next, end)) { + show_rev(NORMAL, end, next); + show_rev(REVERSED, sha1, this); + continue; } *dotdot = '.'; } diff --git a/revision.c b/revision.c index 745b0d2e10..2cda7e0edc 100644 --- a/revision.c +++ b/revision.c @@ -642,14 +642,19 @@ int setup_revisions(int argc, const char **argv, struct rev_info *revs, const ch if (dotdot) { unsigned char from_sha1[20]; char *next = dotdot + 2; + char *this = arg; + static const char HEAD[] = "HEAD"; *dotdot = 0; if (!*next) - next = "HEAD"; - if (!get_sha1(arg, from_sha1) && !get_sha1(next, sha1)) { + next = HEAD; + if (dotdot == arg) + this = HEAD; + if (!get_sha1(this, from_sha1) && + !get_sha1(next, sha1)) { struct commit *exclude; struct commit *include; - exclude = get_commit_reference(revs, arg, from_sha1, flags ^ UNINTERESTING); + exclude = get_commit_reference(revs, this, from_sha1, flags ^ UNINTERESTING); include = get_commit_reference(revs, next, sha1, flags); if (!exclude || !include) die("Invalid revision range %s..%s", arg, next); |