Merge branch 'maint'
[gitweb.git] / builtin-checkout.c
index 7f3bd7bb1cb8f211c78067df9376541e0aa3f923..b5dd9c07b42e0130384259715730f52bc8c4e6c3 100644 (file)
@@ -228,7 +228,8 @@ static int checkout_paths(struct tree *source_tree, const char **pathspec,
        struct lock_file *lock_file = xcalloc(1, sizeof(struct lock_file));
 
        newfd = hold_locked_index(lock_file, 1);
-       read_cache();
+       if (read_cache() < 0)
+               return error("corrupt index file");
 
        if (source_tree)
                read_tree_some(source_tree, pathspec);
@@ -371,7 +372,9 @@ static int merge_working_tree(struct checkout_opts *opts,
        int ret;
        struct lock_file *lock_file = xcalloc(1, sizeof(struct lock_file));
        int newfd = hold_locked_index(lock_file, 1);
-       read_cache();
+
+       if (read_cache() < 0)
+               return error("corrupt index file");
 
        if (opts->force) {
                ret = reset_tree(new->commit->tree, opts, 1);
@@ -678,8 +681,8 @@ int cmd_checkout(int argc, const char **argv, const char *prefix)
                argv++;
                argc--;
 
+               new.name = arg;
                if ((new.commit = lookup_commit_reference_gently(rev, 1))) {
-                       new.name = arg;
                        setup_branch_path(&new);
                        if (resolve_ref(new.path, rev, 1, NULL))
                                new.commit = lookup_commit_reference(rev);