diff --git a/lib/fs.js b/lib/fs.js index eab8d942e183f0..3e9a0540dd9d12 100644 --- a/lib/fs.js +++ b/lib/fs.js @@ -1503,21 +1503,21 @@ function encodeRealpathResult(result, options) { fs.realpathSync = function realpathSync(p, options) { options = getOptions(options, {}); handleError((p = getPathFromURL(p))); + if (typeof p !== 'string') + p += ''; nullCheck(p); - - p = p.toString('utf8'); p = pathModule.resolve(p); - const seenLinks = {}; - const knownHard = {}; const cache = options[internalFS.realpathCacheKey]; - const original = p; - const maybeCachedResult = cache && cache.get(p); if (maybeCachedResult) { return maybeCachedResult; } + const seenLinks = {}; + const knownHard = {}; + const original = p; + // current character position in p var pos; // the partial path so far, including a trailing slash if any @@ -1614,10 +1614,10 @@ fs.realpath = function realpath(p, options, callback) { options = getOptions(options, {}); if (handleError((p = getPathFromURL(p)), callback)) return; + if (typeof p !== 'string') + p += ''; if (!nullCheck(p, callback)) return; - - p = p.toString('utf8'); p = pathModule.resolve(p); const seenLinks = {};