Switch "read_tree_recursive()" over to tree-walk functionality
[git.git] / fsck-objects.c
index 98421aa..ed2eb27 100644 (file)
@@ -198,17 +198,16 @@ static int fsck_tree(struct tree *item)
                        default:
                                break;
                        }
-                       free(last->name);
                        free(last);
                }
 
                last = entry;
        }
-       if (last) {
-               free(last->name);
+       if (last)
                free(last);
-       }
        item->entries = NULL;
+       free(item->buffer);
+       item->buffer = NULL;
 
        retval = 0;
        if (has_full_path) {
@@ -446,6 +445,11 @@ static int fsck_cache_tree(struct cache_tree *it)
 
        if (0 <= it->entry_count) {
                struct object *obj = parse_object(it->sha1);
+               if (!obj) {
+                       error("%s: invalid sha1 pointer in cache-tree",
+                             sha1_to_hex(it->sha1));
+                       return 1;
+               }
                mark_reachable(obj, REACHABLE);
                obj->used = 1;
                if (obj->type != tree_type)
@@ -460,6 +464,7 @@ int main(int argc, char **argv)
 {
        int i, heads;
 
+       track_object_refs = 1;
        setup_git_directory();
 
        for (i = 1; i < argc; i++) {