aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorShawn Pearce <spearce@spearce.org>2006-05-17 18:34:48 -0400
committerJunio C Hamano <junkio@cox.net>2006-05-17 17:36:36 -0700
commit70e34b2dc88e28f09903b85932ea679992da62ff (patch)
treeca893ed0f5e887650962a9c9a5e5cc2b42674336
parentd556fae2c0ea063f15ea4c3678fe931cc426f1ca (diff)
downloadgit-70e34b2dc88e28f09903b85932ea679992da62ff.tar.gz
git-70e34b2dc88e28f09903b85932ea679992da62ff.tar.xz
Fix ref log parsing so it works properly.
The log parser was only ever matching the last log record due to calling strtoul on "> 1136091609" rather than " 1136091609". Also once a match for '@' has been found after the name of the ref there is no point in looking for another '@' within the remaining text. Signed-off-by: Junio C Hamano <junkio@cox.net>
-rw-r--r--refs.c2
-rw-r--r--sha1_name.c1
2 files changed, 2 insertions, 1 deletions
diff --git a/refs.c b/refs.c
index 4c99e3729..ae9825dea 100644
--- a/refs.c
+++ b/refs.c
@@ -459,7 +459,7 @@ int read_ref_at(const char *ref, unsigned long at_time, unsigned char *sha1)
c++;
if (c == logend || *c == '\n')
die("Log %s is corrupt.", logfile);
- date = strtoul(c, NULL, 10);
+ date = strtoul(c + 1, NULL, 10);
if (date <= at_time) {
if (get_sha1_hex(rec + 41, sha1))
die("Log %s is corrupt.", logfile);
diff --git a/sha1_name.c b/sha1_name.c
index 3ac3ab4f5..4376cb392 100644
--- a/sha1_name.c
+++ b/sha1_name.c
@@ -267,6 +267,7 @@ static int get_sha1_basic(const char *str, int len, unsigned char *sha1)
at_time = approxidate(date_spec);
free(date_spec);
len = at_mark;
+ break;
}
}