eio: fix memory leak in eio__scandir()
This commit is contained in:
parent
af936a97df
commit
b450d87719
@ -1812,7 +1812,17 @@ eio__scandir (eio_req *req, etp_worker *self)
|
||||
#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;
|
||||
|
||||
@ -123,6 +123,8 @@ static int uv__fs_after(eio_req* eio) {
|
||||
* 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++) {
|
||||
|
||||
Loading…
Reference in New Issue
Block a user