Commit Diff


commit - f4994adcb43b7e46b012a47d9a749f7c2625796e
commit + f5375317cb16274ce182ea5d99dd913de9b07390
blob - 397a788b56d9098df2a529350832c7b3269e725f
blob + 5e02cc896498a9bc9907b659504cdbe4c41535f2
--- lib/worktree.c
+++ lib/worktree.c
@@ -1475,10 +1475,12 @@ install_blob(struct got_worktree *worktree, const char
 	    GOT_DEFAULT_FILE_MODE);
 	if (fd == -1) {
 		if (errno == ENOENT) {
-			char *parent = dirname(path);
-			if (parent == NULL)
-				return got_error_from_errno2("dirname", path);
+			char *parent;
+			err = got_path_dirname(&parent, path);
+			if (err)
+				return err;
 			err = add_dir_on_disk(worktree, parent);
+			free(parent);
 			if (err)
 				return err;
 			fd = open(ondisk_path,