diff options
author | Patrick Steinhardt <ps@pks.im> | 2023-12-11 12:07:34 +0300 |
---|---|---|
committer | Junio C Hamano <gitster@pobox.com> | 2023-12-11 18:23:16 +0300 |
commit | 917a2b3ce990717ccce5ff372766d9ffd41239f6 (patch) | |
tree | a9f8fe27ce529fa1da78c4f959815b7465ef70ec /reftable | |
parent | e32b8ece640fc700c5a74dd53e6cae8b1a893a6d (diff) |
reftable: handle interrupted reads
There are calls to pread(3P) and read(3P) where we don't properly handle
interrupts. Convert them to use `pread_in_full()` and `read_in_full()`,
respectively.
Signed-off-by: Patrick Steinhardt <ps@pks.im>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
Diffstat (limited to 'reftable')
-rw-r--r-- | reftable/blocksource.c | 2 | ||||
-rw-r--r-- | reftable/stack.c | 2 |
2 files changed, 2 insertions, 2 deletions
diff --git a/reftable/blocksource.c b/reftable/blocksource.c index 8331b34e82..a1ea304429 100644 --- a/reftable/blocksource.c +++ b/reftable/blocksource.c @@ -109,7 +109,7 @@ static int file_read_block(void *v, struct reftable_block *dest, uint64_t off, struct file_block_source *b = v; assert(off + size <= b->size); dest->data = reftable_malloc(size); - if (pread(b->fd, dest->data, size, off) != size) + if (pread_in_full(b->fd, dest->data, size, off) != size) return -1; dest->len = size; return size; diff --git a/reftable/stack.c b/reftable/stack.c index ddbdf1b9c8..ed108a929b 100644 --- a/reftable/stack.c +++ b/reftable/stack.c @@ -92,7 +92,7 @@ static int fd_read_lines(int fd, char ***namesp) } buf = reftable_malloc(size + 1); - if (read(fd, buf, size) != size) { + if (read_in_full(fd, buf, size) != size) { err = REFTABLE_IO_ERROR; goto done; } |