OSDN Git Service

on failed aio submission, set aiocb error and return value
[android-x86/external-musl-libc.git] / src / aio / aio.c
index dae97cc..6d34fa8 100644 (file)
@@ -280,6 +280,8 @@ static int submit(struct aiocb *cb, int op)
 
        if (!q) {
                if (errno != EBADF) errno = EAGAIN;
+               cb->__ret = -1;
+               cb->__err = errno;
                return -1;
        }
        q->ref++;
@@ -303,8 +305,8 @@ static int submit(struct aiocb *cb, int op)
        if (pthread_create(&td, &a, io_thread_func, &args)) {
                pthread_mutex_lock(&q->lock);
                __aio_unref_queue(q);
-               errno = EAGAIN;
-               ret = -1;
+               cb->__err = errno = EAGAIN;
+               cb->__ret = ret = -1;
        }
        pthread_sigmask(SIG_SETMASK, &origmask, 0);