Commit Diff


commit - b6752625761f06493a89a02076323aa1a0d73819
commit + 61d6eaa398ef0a5a82aeee80f9050858beb84c08
blob - e9cc817f06b5bb165733a7e1870f5528776de51f
blob + c0c6adc686d7806615bf8af3fcbf5d9649aefe7c
--- lib/worktree.c
+++ lib/worktree.c
@@ -405,14 +405,14 @@ add_file_on_disk(struct got_worktree *worktree, struct
 		if (len > 0) {
 			/* Skip blob object header first time around. */
 			ssize_t outlen = write(fd, buf + hdrlen, len - hdrlen);
-			hdrlen = 0;
 			if (outlen == -1) {
 				err = got_error_from_errno();
 				goto done;
-			} else if (outlen != len) {
+			} else if (outlen != len - hdrlen) {
 				err = got_error(GOT_ERR_IO);
 				goto done;
 			}
+			hdrlen = 0;
 		}
 	} while (len != 0);