fs.read at position 0 followed by position null reads wrong data
- Version: 6.4.0
- Platform: Ubuntu 14.04 x64
- Subsystem: fs
After reading from position 0 (using fs.read), subsequence read with position null reads the incorrect data.
I would expect a read from position 0 followed by a read from null position to read from the next set of data per the documentation:
position is an integer specifying where to begin reading from in the file. If position is null, data will be read from the current file position.
Save the following to a file and run it.
const fs = require('fs'); const assert = require('assert'); // change this to toggle failing vs passing behavior const fail = true; fs.open(__filename, 'r', (err, fd) => { assert(!err); const buff = new Buffer(4); // this is the line that causes incorrect (unexpected?) behavior // if 0 is passed to read, then the subsequent read with 'null' // results in the wrong data being read // when `null` is used I get `cons` followed by `t fs` // when 0 is used first, I get `cons` followed by `cons` fs.read(fd, buff, 0, 4, (fail) ? 0 : null, (err, bytes, buffer) => { assert(!err); assert.equal(buffer.toString(), 'cons'); console.log(buffer.toString()); fs.read(fd, buff, 0, 4, null, (err, bytes, buffer) => { assert(!err); assert.equal(buffer.toString(), 't fs'); console.log(buffer.toString()); }); }); });