eio: fix memory leak in eio__scandir()

This commit is contained in:
Ben Noordhuis 2011-09-12 18:01:43 +02:00
parent af936a97df
commit b450d87719
2 changed files with 13 additions and 1 deletions

View File

@ -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;

View File

@ -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++) {