Do not use errno when pread() returns 0
If we use pread() while at the end of the file, it will return 0, which is not an error from the operating system point of view. In this case, errno has not been set and must not be used. Signed-off-by: Samuel Tardieu <sam@rfc1149.net> Signed-off-by: Shawn O. Pearce <spearce@spearce.org>
This commit is contained in:
parent
0a2c7eea41
commit
fb74243636
@ -365,8 +365,11 @@ static void *get_data_from_pack(struct object_entry *obj)
|
||||
data = src;
|
||||
do {
|
||||
ssize_t n = pread(pack_fd, data + rdy, len - rdy, from + rdy);
|
||||
if (n <= 0)
|
||||
if (n < 0)
|
||||
die("cannot pread pack file: %s", strerror(errno));
|
||||
if (!n)
|
||||
die("premature end of pack file, %lu bytes missing",
|
||||
len - rdy);
|
||||
rdy += n;
|
||||
} while (rdy < len);
|
||||
data = xmalloc(obj->size);
|
||||
|
Loading…
Reference in New Issue
Block a user