uv: upgrade to b450d87
authorBen Noordhuis <info@bnoordhuis.nl>
Mon, 12 Sep 2011 16:41:48 +0000 (18:41 +0200)
committerBen Noordhuis <info@bnoordhuis.nl>
Mon, 12 Sep 2011 16:41:48 +0000 (18:41 +0200)
deps/uv/src/unix/eio/eio.c
deps/uv/src/unix/fs.c
deps/uv/src/win/getaddrinfo.c

index a005db5..74153ad 100644 (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;
index cab4106..60f5e59 100644 (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++) {
index 1d4e819..3d31342 100644 (file)
@@ -255,7 +255,7 @@ int uv_getaddrinfo(uv_loop_t* loop,
     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;