aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/node_file.cc19
1 files changed, 12 insertions, 7 deletions
diff --git a/src/node_file.cc b/src/node_file.cc
index 6188da2448..3ffec4225b 100644
--- a/src/node_file.cc
+++ b/src/node_file.cc
@@ -739,7 +739,7 @@ static void Fdatasync(const FunctionCallbackInfo<Value>& args) {
CHECK_GE(argc, 2);
CHECK(args[0]->IsInt32());
- const int fd = args[0]->As<Int32>()->Value();
+ const int fd = args[0].As<Int32>()->Value();
if (args[1]->IsObject()) { // fdatasync(fd, req)
CHECK_EQ(argc, 2);
@@ -756,16 +756,21 @@ static void Fdatasync(const FunctionCallbackInfo<Value>& args) {
static void Fsync(const FunctionCallbackInfo<Value>& args) {
Environment* env = Environment::GetCurrent(args);
- CHECK(args[0]->IsInt32());
+ const int argc = args.Length();
+ CHECK_GE(argc, 2);
- int fd = args[0]->Int32Value();
+ CHECK(args[0]->IsInt32());
+ const int fd = args[0].As<Int32>()->Value();
- if (args[1]->IsObject()) {
- CHECK_EQ(args.Length(), 2);
+ if (args[1]->IsObject()) { // fsync(fd, req)
+ CHECK_EQ(argc, 2);
AsyncCall(env, args, "fsync", UTF8, AfterNoArgs,
uv_fs_fsync, fd);
- } else {
- SYNC_CALL(fsync, 0, fd)
+ } else { // fsync(fd, undefined, ctx)
+ CHECK_EQ(argc, 3);
+ fs_req_wrap req_wrap;
+ SyncCall(env, args[2], &req_wrap, "fsync",
+ uv_fs_fsync, fd);
}
}