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:
parent
4444e731f2
commit
66f09be743
10
lib/fs.js
10
lib/fs.js
@ -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));
|
||||
}
|
||||
|
@ -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);
|
||||
}));
|
||||
});
|
Loading…
x
Reference in New Issue
Block a user