From e4ccf65b9909d0329af76e9e14d1a562a3946633 Mon Sep 17 00:00:00 2001 From: Joyee Cheung Date: Sat, 3 Feb 2018 21:58:22 +0800 Subject: [PATCH] fs: fix misplaced errors in fs.symlinkSync The ctx.error is supposed to be handled in fs.readlinkSync, but was handled in fs.symlinkSync by mistake. Also fix the error number check in readlink to be consistent with SYNC_CALL. --- lib/fs.js | 10 +++++----- src/node_file.cc | 2 +- 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/lib/fs.js b/lib/fs.js index 56acc657912bbe..da718f3f334413 100644 --- a/lib/fs.js +++ b/lib/fs.js @@ -1161,6 +1161,11 @@ fs.readlinkSync = function(path, options) { options.encoding, undefined, ctx); if (ctx.errno !== undefined) { throw errors.uvException(ctx); + } else if (ctx.error) { + // TODO(joyeecheung): this is an encoding error usually caused by memory + // problems. We need to figure out proper error code(s) for this. + Error.captureStackTrace(ctx.error); + throw ctx.error; } return result; }; @@ -1232,11 +1237,6 @@ fs.symlinkSync = function(target, path, type) { if (ctx.errno !== undefined) { throw errors.uvException(ctx); - } else if (ctx.error) { - // TODO(joyeecheung): this is an encoding error usually caused by memory - // problems. We need to figure out proper error code(s) for this. - Error.captureStackTrace(ctx.error); - throw ctx.error; } }; diff --git a/src/node_file.cc b/src/node_file.cc index a77dc0a986765b..62dd5fe80cf8b2 100644 --- a/src/node_file.cc +++ b/src/node_file.cc @@ -886,7 +886,7 @@ static void ReadLink(const FunctionCallbackInfo& args) { fs_req_wrap req; int err = SyncCall(env, args[3], &req, "readlink", uv_fs_readlink, *path); - if (err) { + if (err < 0) { return; // syscall failed, no need to continue, error info is in ctx } const char* link_path = static_cast(req.req.ptr);