module: fix stat with long paths on Windows
PR-URL: https://github.com/nodejs/io.js/pull/2013 Reviewed-By: Rod Vagg <rod@vagg.org> Reviewed-By: Ben Noordhuis <info@bnoordhuis.nl>
This commit is contained in:
parent
b0990ef45d
commit
a4f4909f3d
@ -143,7 +143,7 @@ Module._findPath = function(request, paths) {
|
|||||||
// For each path
|
// For each path
|
||||||
for (var i = 0, PL = paths.length; i < PL; i++) {
|
for (var i = 0, PL = paths.length; i < PL; i++) {
|
||||||
// Don't search further if path doesn't exist
|
// Don't search further if path doesn't exist
|
||||||
if (paths[i] && internalModuleStat(paths[i]) < 1) continue;
|
if (paths[i] && internalModuleStat(path._makeLong(paths[i])) < 1) continue;
|
||||||
var basePath = path.resolve(paths[i], request);
|
var basePath = path.resolve(paths[i], request);
|
||||||
var filename;
|
var filename;
|
||||||
|
|
||||||
|
@ -1,17 +1,23 @@
|
|||||||
'use strict';
|
'use strict';
|
||||||
var common = require('../common');
|
const common = require('../common');
|
||||||
var fs = require('fs');
|
const fs = require('fs');
|
||||||
var path = require('path');
|
const path = require('path');
|
||||||
var assert = require('assert');
|
|
||||||
|
|
||||||
// make a path that is more than 260 chars long.
|
// make a path that is more than 260 chars long.
|
||||||
var fileNameLen = Math.max(261 - common.tmpDir.length - 1, 1);
|
const dirNameLen = Math.max(260 - common.tmpDir.length, 1);
|
||||||
var fileName = path.join(common.tmpDir, new Array(fileNameLen + 1).join('x'));
|
const dirName = path.join(common.tmpDir, 'x'.repeat(dirNameLen));
|
||||||
var fullPath = path.resolve(fileName);
|
const fullDirPath = path.resolve(dirName);
|
||||||
|
|
||||||
|
const indexFile = path.join(fullDirPath, 'index.js');
|
||||||
|
const otherFile = path.join(fullDirPath, 'other.js');
|
||||||
|
|
||||||
common.refreshTmpDir();
|
common.refreshTmpDir();
|
||||||
fs.writeFileSync(fullPath, 'module.exports = 42;');
|
|
||||||
|
|
||||||
assert.equal(require(fullPath), 42);
|
fs.mkdirSync(fullDirPath);
|
||||||
|
fs.writeFileSync(indexFile, 'require("./other");');
|
||||||
|
fs.writeFileSync(otherFile, '');
|
||||||
|
|
||||||
fs.unlinkSync(fullPath);
|
require(indexFile);
|
||||||
|
require(otherFile);
|
||||||
|
|
||||||
|
common.refreshTmpDir();
|
||||||
|
Loading…
x
Reference in New Issue
Block a user