Revert "fs: ensure readFile[Sync] reads from the beginning"

This reverts commit 4444e731f218edf265a0b160bf1d561df2d5e5b3.

PR-URL: https://github.com/nodejs/node/pull/10809
Reviewed-By: Anna Henningsen <anna@addaleax.net>
This commit is contained in:
Sakthipriyan Vairamani (thefourtheye) 2017-01-15 00:44:19 +05:30 committed by Anna Henningsen
parent 4444e731f2
commit 66f09be743
No known key found for this signature in database
GPG Key ID: D8B9F5AEAE84E4CF
2 changed files with 5 additions and 28 deletions

View File

@ -310,7 +310,7 @@ ReadFileContext.prototype.read = function() {
req.oncomplete = readFileAfterRead;
req.context = this;
binding.read(this.fd, buffer, offset, length, this.pos, req);
binding.read(this.fd, buffer, offset, length, -1, req);
};
ReadFileContext.prototype.close = function(err) {
@ -447,11 +447,11 @@ function tryCreateBuffer(size, fd, isUserFd) {
return buffer;
}
function tryReadSync(fd, isUserFd, buffer, pos, len, offset) {
function tryReadSync(fd, isUserFd, buffer, pos, len) {
var threw = true;
var bytesRead;
try {
bytesRead = fs.readSync(fd, buffer, pos, len, offset);
bytesRead = fs.readSync(fd, buffer, pos, len);
threw = false;
} finally {
if (threw && !isUserFd) fs.closeSync(fd);
@ -480,7 +480,7 @@ fs.readFileSync = function(path, options) {
if (size !== 0) {
do {
bytesRead = tryReadSync(fd, isUserFd, buffer, pos, size - pos, pos);
bytesRead = tryReadSync(fd, isUserFd, buffer, pos, size - pos);
pos += bytesRead;
} while (bytesRead !== 0 && pos < size);
} else {
@ -488,7 +488,7 @@ fs.readFileSync = function(path, options) {
// the kernel lies about many files.
// Go ahead and try to read some bytes.
buffer = Buffer.allocUnsafe(8192);
bytesRead = tryReadSync(fd, isUserFd, buffer, 0, 8192, pos);
bytesRead = tryReadSync(fd, isUserFd, buffer, 0, 8192);
if (bytesRead !== 0) {
buffers.push(buffer.slice(0, bytesRead));
}

View File

@ -1,23 +0,0 @@
'use strict';
const common = require('../common');
const assert = require('assert');
const fs = require('fs');
const path = require('path');
const filename = path.join(common.tmpDir, 'readfile.txt');
const dataExpected = 'a'.repeat(100);
fs.writeFileSync(filename, dataExpected);
const fileLength = dataExpected.length;
['r', 'a+'].forEach((mode) => {
const fd = fs.openSync(filename, mode);
assert.strictEqual(fs.readFileSync(fd).length, fileLength);
// Reading again should result in the same length.
assert.strictEqual(fs.readFileSync(fd).length, fileLength);
fs.readFile(fd, common.mustCall((err, buf) => {
assert.ifError(err);
assert.strictEqual(buf.length, fileLength);
}));
});