summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorFedor Indutny <fedor@indutny.com>2014-09-24 00:19:39 +0400
committerFedor Indutny <fedor@indutny.com>2014-09-24 00:19:39 +0400
commit7fd35e6ea43ece7ef40d50820a80d798eceaa362 (patch)
tree3a809b23142c7f0d6682d0af5ad614a7624df70c
parentc5f5d4cd11c2aec74fa03985405122d1ecb06f69 (diff)
downloadnodejs-7fd35e6ea43ece7ef40d50820a80d798eceaa362.tar.gz
nodejs-7fd35e6ea43ece7ef40d50820a80d798eceaa362.tar.bz2
nodejs-7fd35e6ea43ece7ef40d50820a80d798eceaa362.zip
uv: apply floating patch 2f54947b
-rw-r--r--deps/uv/src/unix/fs.c7
-rw-r--r--deps/uv/test/test-fs.c8
2 files changed, 13 insertions, 2 deletions
diff --git a/deps/uv/src/unix/fs.c b/deps/uv/src/unix/fs.c
index 2dd0fe97c..9bb7baf77 100644
--- a/deps/uv/src/unix/fs.c
+++ b/deps/uv/src/unix/fs.c
@@ -312,14 +312,15 @@ static ssize_t uv__fs_readdir(uv_fs_t* req) {
dents = NULL;
n = scandir(req->path, &dents, uv__fs_readdir_filter, alphasort);
+ /* NOTE: We will use nbufs as an index field */
+ req->nbufs = 0;
+
if (n == 0)
goto out; /* osx still needs to deallocate some memory */
else if (n == -1)
return n;
- /* NOTE: We will use nbufs as an index field */
req->ptr = dents;
- req->nbufs = 0;
return n;
@@ -334,6 +335,8 @@ out:
}
errno = saved_errno;
+ req->ptr = NULL;
+
return n;
}
diff --git a/deps/uv/test/test-fs.c b/deps/uv/test/test-fs.c
index a06ddada8..a514801b9 100644
--- a/deps/uv/test/test-fs.c
+++ b/deps/uv/test/test-fs.c
@@ -436,10 +436,13 @@ static void readdir_cb(uv_fs_t* req) {
static void empty_readdir_cb(uv_fs_t* req) {
+ uv_dirent_t dent;
+
ASSERT(req == &readdir_req);
ASSERT(req->fs_type == UV_FS_READDIR);
ASSERT(req->result == 0);
ASSERT(req->ptr == NULL);
+ ASSERT(UV_EOF == uv_fs_readdir_next(req, &dent));
uv_fs_req_cleanup(req);
readdir_cb_count++;
}
@@ -1805,6 +1808,7 @@ TEST_IMPL(fs_stat_missing_path) {
TEST_IMPL(fs_readdir_empty_dir) {
const char* path;
uv_fs_t req;
+ uv_dirent_t dent;
int r;
path = "./empty_dir/";
@@ -1813,10 +1817,14 @@ TEST_IMPL(fs_readdir_empty_dir) {
uv_fs_mkdir(loop, &req, path, 0777, NULL);
uv_fs_req_cleanup(&req);
+ /* Fill the req to ensure that required fields are cleaned up */
+ memset(&req, 0xdb, sizeof(req));
+
r = uv_fs_readdir(loop, &req, path, 0, NULL);
ASSERT(r == 0);
ASSERT(req.result == 0);
ASSERT(req.ptr == NULL);
+ ASSERT(UV_EOF == uv_fs_readdir_next(&req, &dent));
uv_fs_req_cleanup(&req);
r = uv_fs_readdir(loop, &readdir_req, path, 0, empty_readdir_cb);