fs: fix functions executed in wrong context

The callback should run in the global scope and not in the FSReqWrap
context.

PR-URL: https://github.com/nodejs/node/pull/18668
Refs: https://github.com/nodejs/node/pull/12562
Refs: https://github.com/nodejs/node/pull/12976
Reviewed-By: Matteo Collina <matteo.collina@gmail.com>
Reviewed-By: Michaël Zasso <targos@protonmail.com>
Reviewed-By: Ben Noordhuis <info@bnoordhuis.nl>
Reviewed-By: James M Snell <jasnell@gmail.com>
Reviewed-By: Joyee Cheung <joyeec9h3@gmail.com>
Reviewed-By: Gus Caplan <me@gus.host>
This commit is contained in:
Ruben Bridgewater 2018-02-09 16:31:26 +01:00
parent e9f2cecf1a
commit c3eb3efa31
No known key found for this signature in database
GPG Key ID: F07496B3EB3C1762
3 changed files with 5 additions and 3 deletions

View File

@ -737,7 +737,7 @@ fs.ftruncateSync = function(fd, len = 0) {
};
fs.rmdir = function(path, callback) {
callback = maybeCallback(callback);
callback = makeCallback(callback);
path = getPathFromURL(path);
validatePath(path);
const req = new FSReqWrap();
@ -1784,7 +1784,7 @@ fs.realpath = function realpath(p, options, callback) {
fs.realpath.native = function(path, options, callback) {
callback = maybeCallback(callback || options);
callback = makeCallback(callback || options);
options = getOptions(options, {});
path = getPathFromURL(path);
validatePath(path);

View File

@ -29,6 +29,7 @@ fs.mkdir(d, 0o666, common.mustCall(function(err) {
assert.ifError(err);
fs.mkdir(d, 0o666, common.mustCall(function(err) {
assert.strictEqual(this, undefined);
assert.ok(err, 'got no error');
assert.ok(/^EEXIST/.test(err.message), 'got no EEXIST message');
assert.strictEqual(err.code, 'EEXIST', 'got no EEXIST code');

View File

@ -6,7 +6,8 @@ const fs = require('fs');
if (!common.isOSX) common.skip('MacOS-only test.');
assert.strictEqual(fs.realpathSync.native('/users'), '/Users');
fs.realpath.native('/users', common.mustCall((err, res) => {
fs.realpath.native('/users', common.mustCall(function(err, res) {
assert.ifError(err);
assert.strictEqual(res, '/Users');
assert.strictEqual(this, undefined);
}));