From: Junio C Hamano Date: Tue, 2 May 2006 05:28:33 +0000 (-0700) Subject: Merge branch 'jc/cache-tree' into next X-Git-Tag: v1.4.1-rc1~155 X-Git-Url: https://asedeno.scripts.mit.edu/gitweb/?a=commitdiff_plain;h=f5196dbb25febb15b41ef0e6569aaa1654b8533e;hp=f476ce2061888a271766dcf3306bc8260852d99d;p=git.git Merge branch 'jc/cache-tree' into next * jc/cache-tree: fsck-objects: mark objects reachable from cache-tree cache-tree: replace a sscanf() by two strtol() calls --- diff --git a/cache-tree.c b/cache-tree.c index 28b78f88e..e452238ba 100644 --- a/cache-tree.c +++ b/cache-tree.c @@ -440,6 +440,8 @@ static struct cache_tree *read_one(const char **buffer, unsigned long *size_p) { const char *buf = *buffer; unsigned long size = *size_p; + const char *cp; + char *ep; struct cache_tree *it; int i, subtree_nr; @@ -453,7 +455,14 @@ static struct cache_tree *read_one(const char **buffer, unsigned long *size_p) goto free_return; buf++; size--; it = cache_tree(); - if (sscanf(buf, "%d %d\n", &it->entry_count, &subtree_nr) != 2) + + cp = buf; + it->entry_count = strtol(cp, &ep, 10); + if (cp == ep) + goto free_return; + cp = ep; + subtree_nr = strtol(cp, &ep, 10); + if (cp == ep) goto free_return; while (size && *buf && *buf != '\n') { size--; diff --git a/fsck-objects.c b/fsck-objects.c index cc09143a9..98421aab3 100644 --- a/fsck-objects.c +++ b/fsck-objects.c @@ -446,6 +446,8 @@ static int fsck_cache_tree(struct cache_tree *it) if (0 <= it->entry_count) { struct object *obj = parse_object(it->sha1); + mark_reachable(obj, REACHABLE); + obj->used = 1; if (obj->type != tree_type) err |= objerror(obj, "non-tree in cache-tree"); }