]> asedeno.scripts.mit.edu Git - git.git/commitdiff
Merge branch 'jc/cache-tree' into next
authorJunio C Hamano <junkio@cox.net>
Tue, 2 May 2006 05:28:33 +0000 (22:28 -0700)
committerJunio C Hamano <junkio@cox.net>
Tue, 2 May 2006 05:28:33 +0000 (22:28 -0700)
* jc/cache-tree:
  fsck-objects: mark objects reachable from cache-tree
  cache-tree: replace a sscanf() by two strtol() calls

cache-tree.c
fsck-objects.c

index 28b78f88effe9ea766ff780fc948592c5fab51bf..e452238ba7db47c08bd732dd425cb3be4c8bd73d 100644 (file)
@@ -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--;
index cc09143a92a64a0d7e14fb7195cd39c05bb0b49f..98421aab308086edc871001842dea1f8a06af71c 100644 (file)
@@ -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");
        }