Commit Diff


commit - eac9755fe4356f03aa21a52a38051be0d022fcf6
commit + 381be7cc5b9b3d938b44f0f30dafdecf1c2f5a6b
blob - 762a4ef12b023b11278b8b1c36cf0b4feadfe1db
blob + 1a57978e5b801e3f05e7fc89d8229263b8f664cf
--- lib/worktree.c
+++ lib/worktree.c
@@ -575,14 +575,14 @@ tree_checkout_entry(struct got_worktree *worktree,
 		    repo, progress_cb, progress_arg, progress_path);
 		break;
 	case GOT_OBJ_TYPE_TREE:
-		err = got_object_tree_open(&tree, repo, obj);
-		if (err)
-			goto done;
 		if (strlen(worktree->path_prefix) < strlen(path)) {
 			err = add_dir_on_disk(worktree, path);
 			if (err)
 				break;
 		}
+		err = got_object_tree_open(&tree, repo, obj);
+		if (err)
+			goto done;
 		/* XXX infinite recursion possible */
 		err = tree_checkout(worktree, fileindex, tree, path, repo,
 		    progress_cb, progress_arg, cancel_cb, cancel_arg);