Browse Source

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

This reverts commit 4444e731f2.

PR-URL: https://github.com/nodejs/node/pull/10809
Reviewed-By: Anna Henningsen <anna@addaleax.net>
v6
Sakthipriyan Vairamani (thefourtheye) 8 years ago
committed by Anna Henningsen
parent
commit
66f09be743
No known key found for this signature in database GPG Key ID: D8B9F5AEAE84E4CF
  1. 10
      lib/fs.js
  2. 23
      test/parallel/test-fs-readfile-fd-offset.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));
}

23
test/parallel/test-fs-readfile-fd-offset.js

@ -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…
Cancel
Save