Skip to content

Commit 6f6b2ee

Browse files
committed
eio_linux: use do/while and ret == -1
1 parent 5a25ee9 commit 6f6b2ee

1 file changed

Lines changed: 6 additions & 8 deletions

File tree

lib_eio_linux/eio_stubs.c

Lines changed: 6 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -34,16 +34,14 @@ CAMLprim value caml_eio_mkdirat(value v_fd, value v_path, value v_perm) {
3434
CAMLprim value caml_eio_getrandom(value v_ba, value v_off, value v_len) {
3535
CAMLparam1(v_ba);
3636
ssize_t ret;
37-
size_t off = (size_t)Long_val(v_off);
38-
size_t len = (size_t)Long_val(v_len);
39-
while (off < len) {
37+
ssize_t off = (ssize_t)Long_val(v_off);
38+
ssize_t len = (ssize_t)Long_val(v_len);
39+
do {
4040
void *buf = Caml_ba_data_val(v_ba) + off;
4141
caml_enter_blocking_section();
42-
ret = getrandom(buf, len - off, 0);
42+
ret = getrandom(buf, len, 0);
4343
caml_leave_blocking_section();
44-
if (ret < 0 && errno == EINTR) continue;
45-
else if (ret < 0) uerror("getrandom", Nothing);
46-
off += ret;
47-
}
44+
} while (ret == -1 && errno == EINTR);
45+
if (ret == -1) uerror("getrandom", Nothing);
4846
CAMLreturn(Val_long(ret));
4947
}

0 commit comments

Comments
 (0)