aboutsummaryrefslogtreecommitdiff
path: root/sha1_file.c
diff options
context:
space:
mode:
authorJunio C Hamano <gitster@pobox.com>2017-10-03 15:42:49 +0900
committerJunio C Hamano <gitster@pobox.com>2017-10-03 15:42:49 +0900
commitcb1083ca23c2f78140b66b925ed0b82fe400eea5 (patch)
treec78509d2b9fbe79c99ed1acb83bf43886b4d0c0c /sha1_file.c
parentd4e93836a6a072e392b20d7daf604fd41e15ecf9 (diff)
parent8a1a8d2ad1b41a0a28d37d1d21ee9620a23e91eb (diff)
downloadgit-cb1083ca23c2f78140b66b925ed0b82fe400eea5.tar.gz
git-cb1083ca23c2f78140b66b925ed0b82fe400eea5.tar.xz
Merge branch 'jk/read-in-full'
Code clean-up to prevent future mistakes by copying and pasting code that checks the result of read_in_full() function. * jk/read-in-full: worktree: check the result of read_in_full() worktree: use xsize_t to access file size distinguish error versus short read from read_in_full() avoid looking at errno for short read_in_full() returns prefer "!=" when checking read_in_full() result notes-merge: drop dead zero-write code files-backend: prefer "0" for write_in_full() error check
Diffstat (limited to 'sha1_file.c')
-rw-r--r--sha1_file.c11
1 files changed, 8 insertions, 3 deletions
diff --git a/sha1_file.c b/sha1_file.c
index 5a2014811..09ad64ce5 100644
--- a/sha1_file.c
+++ b/sha1_file.c
@@ -1748,10 +1748,15 @@ static int index_core(unsigned char *sha1, int fd, size_t size,
ret = index_mem(sha1, "", size, type, path, flags);
} else if (size <= SMALL_FILE_SIZE) {
char *buf = xmalloc(size);
- if (size == read_in_full(fd, buf, size))
- ret = index_mem(sha1, buf, size, type, path, flags);
+ ssize_t read_result = read_in_full(fd, buf, size);
+ if (read_result < 0)
+ ret = error_errno("read error while indexing %s",
+ path ? path : "<unknown>");
+ else if (read_result != size)
+ ret = error("short read while indexing %s",
+ path ? path : "<unknown>");
else
- ret = error_errno("short read");
+ ret = index_mem(sha1, buf, size, type, path, flags);
free(buf);
} else {
void *buf = xmmap(NULL, size, PROT_READ, MAP_PRIVATE, fd, 0);