readdirSyncRecursive: follow symlinks only if we haven't read the destination yet

Fix an issue whre readdirSyncRecursive will get into infinite loop for
circular symlinks.

Note: fix to readdirRecursive is also needed.
This commit is contained in:
Daniel Chcouri 2014-05-14 06:48:05 +03:00
parent 13f486d867
commit feddabd57b

View file

@ -23,7 +23,14 @@ var fs = require("fs"),
exports.readdirSyncRecursive = function(baseDir) {
baseDir = baseDir.replace(/\/$/, '');
var checkedInodes = {};
var readdirSyncRecursive = function(baseDir) {
var inode = fs.statSync(baseDir).ino;
if (inode in checkedInodes) {
return [];
}
checkedInodes[inode] = true;
var files = [],
curFiles,
nextDirs,