__io_uring_get_cqe: use internal stable pointer for cqe
Signed-off-by: Jens Axboe <axboe@kernel.dk>
diff --git a/src/queue.c b/src/queue.c
index e6cad37..31dc479 100644
--- a/src/queue.c
+++ b/src/queue.c
@@ -33,15 +33,16 @@
int __io_uring_get_cqe(struct io_uring *ring, struct io_uring_cqe **cqe_ptr,
unsigned submit, unsigned wait_nr, sigset_t *sigmask)
{
+ struct io_uring_cqe *cqe = NULL;
int ret = 0, err;
do {
unsigned flags = 0;
- err = __io_uring_peek_cqe(ring, cqe_ptr);
+ err = __io_uring_peek_cqe(ring, &cqe);
if (err)
break;
- if (!*cqe_ptr && !wait_nr && !submit) {
+ if (!cqe && !wait_nr && !submit) {
err = -EAGAIN;
break;
}
@@ -55,10 +56,11 @@
if (ret < 0)
err = -errno;
submit -= ret;
- if (*cqe_ptr)
+ if (cqe)
break;
} while (!err);
+ *cqe_ptr = cqe;
return err;
}