Commit Diff


commit - 2ad902c0cee1b56de28385c8f1cd6c2d70131a82
commit + fdcb7dafaba4486c7faede6ba199e2024b269b1f
blob - dfe5cb16a9227740ff262c42a6f06f174256bc7a
blob + a8f682710c80855da6d8bcaa9a34b34ede492b9f
--- lib/worktree.c
+++ lib/worktree.c
@@ -810,11 +810,13 @@ merge_file(int *local_changes_subsumed, struct got_wor
 	if (rename(merged_path, ondisk_path) != 0) {
 		err = got_error_from_errno3("rename", merged_path,
 		    ondisk_path);
-		unlink(merged_path);
 		goto done;
 	}
-
 done:
+	if (err) {
+		if (merged_path)
+			unlink(merged_path);
+	}
 	if (merged_fd != -1 && close(merged_fd) != 0 && err == NULL)
 		err = got_error_from_errno("close");
 	if (f_orig && fclose(f_orig) != 0 && err == NULL)