#endif
if (req->flags & EIO_FLAG_PTR1_FREE)
- free (req->ptr1);
+ {
+ req->flags &= ~EIO_FLAG_PTR1_FREE;
+ free (req->ptr1);
+ req->ptr1 = NULL;
+ }
+
+ if (!dirp)
+ {
+ req->errorno = errno;
+ return;
+ }
req->flags |= EIO_FLAG_PTR1_FREE | EIO_FLAG_PTR2_FREE;
req->ptr1 = dents = flags ? malloc (dentalloc * sizeof (eio_dirent)) : 0;
* callback. We must keep it until uv_fs_req_cleanup. If we get rid of
* libeio this can be avoided.
*/
+ if (req->eio->ptr2 == NULL)
+ break;
buflen = 0;
name = req->eio->ptr2;
for (i = 0; i < req->result; i++) {
goto error;
}
- uv_req_init(loop, (uv_req_t*) handle);
+ uv_req_init(loop, (uv_req_t*)handle);
handle->getaddrinfo_cb = getaddrinfo_cb;
handle->res = NULL;