summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorJoyee Cheung <joyeec9h3@gmail.com>2018-01-24 06:53:47 +0800
committerJoyee Cheung <joyeec9h3@gmail.com>2018-02-01 15:52:11 +0800
commit32bf0f6c5b3648a487c3fc56d0830de2ceeb60a5 (patch)
tree37aca3d7e1ba04d747b13cfcb6a0054de5e0f1e5 /src
parentbf6ce47259ebfe9f6349c223cc1735726aee062d (diff)
downloadandroid-node-v8-32bf0f6c5b3648a487c3fc56d0830de2ceeb60a5.tar.gz
android-node-v8-32bf0f6c5b3648a487c3fc56d0830de2ceeb60a5.tar.bz2
android-node-v8-32bf0f6c5b3648a487c3fc56d0830de2ceeb60a5.zip
fs: throw errors from fs.symlinkSync in JS
PR-URL: https://github.com/nodejs/node/pull/18348 Refs: https://github.com/nodejs/node/issues/18106 Reviewed-By: Michaƫl Zasso <targos@protonmail.com> Reviewed-By: James M Snell <jasnell@gmail.com>
Diffstat (limited to 'src')
-rw-r--r--src/node_file.cc14
1 files changed, 9 insertions, 5 deletions
diff --git a/src/node_file.cc b/src/node_file.cc
index 8cbfa1b179..d67d45d4a8 100644
--- a/src/node_file.cc
+++ b/src/node_file.cc
@@ -598,22 +598,26 @@ static void FStat(const FunctionCallbackInfo<Value>& args) {
static void Symlink(const FunctionCallbackInfo<Value>& args) {
Environment* env = Environment::GetCurrent(args);
- CHECK_GE(args.Length(), 3);
+ int argc = args.Length();
+ CHECK_GE(argc, 4);
BufferValue target(env->isolate(), args[0]);
CHECK_NE(*target, nullptr);
BufferValue path(env->isolate(), args[1]);
CHECK_NE(*path, nullptr);
- CHECK(args[2]->IsUint32());
- int flags = args[2]->Uint32Value(env->context()).ToChecked();
+ CHECK(args[2]->IsInt32());
+ int flags = args[2].As<Int32>()->Value();
if (args[3]->IsObject()) { // symlink(target, path, flags, req)
CHECK_EQ(args.Length(), 4);
AsyncDestCall(env, args, "symlink", *path, path.length(), UTF8,
AfterNoArgs, uv_fs_symlink, *target, *path, flags);
- } else { // symlink(target, path, flags)
- SYNC_DEST_CALL(symlink, *target, *path, *target, *path, flags)
+ } else { // symlink(target, path, flags, undefinec, ctx)
+ CHECK_EQ(argc, 5);
+ fs_req_wrap req_wrap;
+ SyncCall(env, args[4], &req_wrap, "symlink",
+ uv_fs_symlink, *target, *path, flags);
}
}