diff options
author | Fedor Indutny <fedor@indutny.com> | 2014-09-24 00:19:39 +0400 |
---|---|---|
committer | Fedor Indutny <fedor@indutny.com> | 2014-09-24 00:19:39 +0400 |
commit | 7fd35e6ea43ece7ef40d50820a80d798eceaa362 (patch) | |
tree | 3a809b23142c7f0d6682d0af5ad614a7624df70c | |
parent | c5f5d4cd11c2aec74fa03985405122d1ecb06f69 (diff) | |
download | nodejs-7fd35e6ea43ece7ef40d50820a80d798eceaa362.tar.gz nodejs-7fd35e6ea43ece7ef40d50820a80d798eceaa362.tar.bz2 nodejs-7fd35e6ea43ece7ef40d50820a80d798eceaa362.zip |
uv: apply floating patch 2f54947b
-rw-r--r-- | deps/uv/src/unix/fs.c | 7 | ||||
-rw-r--r-- | deps/uv/test/test-fs.c | 8 |
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); |