diff --git a/lib/fs.js b/lib/fs.js index 91489f816652c9..a5403d50f91f3c 100644 --- a/lib/fs.js +++ b/lib/fs.js @@ -521,7 +521,6 @@ function tryStatSync(fd, isUserFd) { } finally { if (threw && !isUserFd) fs.closeSync(fd); } - return !threw; } function tryCreateBuffer(size, fd, isUserFd) { @@ -553,10 +552,11 @@ fs.readFileSync = function(path, options) { var isUserFd = isFd(path); // file descriptor ownership var fd = isUserFd ? path : fs.openSync(path, options.flag || 'r', 0o666); + tryStatSync(fd, isUserFd); // Use stats array directly to avoid creating an fs.Stats instance just for // our internal use. var size; - if (tryStatSync(fd, isUserFd) && (statValues[1/*mode*/] & S_IFMT) === S_IFREG) + if ((statValues[1/*mode*/] & S_IFMT) === S_IFREG) size = statValues[8/*size*/]; else size = 0; @@ -1085,7 +1085,7 @@ if (constants.O_SYMLINK !== undefined) { callback(err); return; } - // prefer to return the chmod error, if one occurs, + // Prefer to return the chmod error, if one occurs, // but still try to close, and report closing errors if they occur. fs.fchmod(fd, mode, function(err) { fs.close(fd, function(err2) { @@ -1098,20 +1098,18 @@ if (constants.O_SYMLINK !== undefined) { fs.lchmodSync = function(path, mode) { var fd = fs.openSync(path, constants.O_WRONLY | constants.O_SYMLINK); - // prefer to return the chmod error, if one occurs, + // Prefer to return the chmod error, if one occurs, // but still try to close, and report closing errors if they occur. - var err, err2, ret; + var ret; try { ret = fs.fchmodSync(fd, mode); - } catch (er) { - err = er; - } - try { - fs.closeSync(fd); - } catch (er) { - err2 = er; + } catch (err) { + try { + fs.closeSync(fd); + } catch (ignore) {} + throw err; } - if (err || err2) throw (err || err2); + fs.closeSync(fd); return ret; }; }