Permalink
Browse files

reject @{-1} not at beginning of object name

Something like foo@{-1} is nonsensical, as the @{-N} syntax
is reserved for "the Nth last branch", and is not an actual
reflog selector. We should not feed such nonsense to
approxidate at all.

Signed-off-by: Jeff King <peff@peff.net>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
  • Loading branch information...
1 parent d46a830 commit 12a258c078da3481a5735a7dca00bbe75cd4713b @peff peff committed with gitster Jan 28, 2010
Showing with 5 additions and 1 deletion.
  1. +4 −0 sha1_name.c
  2. +1 −1 t/t1508-at-combinations.sh
View
@@ -399,6 +399,10 @@ static int get_sha1_basic(const char *str, int len, unsigned char *sha1)
unsigned long co_time;
int co_tz, co_cnt;
+ /* a @{-N} placed anywhere except the start is an error */
+ if (str[at+2] == '-')
+ return -1;
+
/* Is it asking for N-th entry, or approxidate? */
for (i = nth = 0; 0 <= nth && i < reflog_len; i++) {
char ch = str[at+2+i];
@@ -45,7 +45,7 @@ check "@{u}" upstream-two
check "@{u}@{1}" upstream-one
check "@{-1}@{u}" master-two
check "@{-1}@{u}@{1}" master-one
-fail nonsense "@{u}@{-1}"
+nonsense "@{u}@{-1}"
nonsense "@{1}@{u}"
test_done

0 comments on commit 12a258c

Please sign in to comment.