mirror of https://github.com/nodejs/node.git
fs: fix .write() not coercing non-string values
Fixes: https://github.com/iojs/io.js/issues/1098 PR-URL: https://github.com/iojs/io.js/pull/1102 Reviewed-By: Brendan Ashworth <brendan.ashworth@me.com>pull/1085/merge
parent
4bd3620382
commit
cf565b5516
|
@ -629,7 +629,7 @@ fs.write = function(fd, buffer, offset, length, position, callback) {
|
|||
return binding.writeBuffer(fd, buffer, offset, length, position, req);
|
||||
}
|
||||
|
||||
if (typeof buffer === 'string')
|
||||
if (typeof buffer !== 'string')
|
||||
buffer += '';
|
||||
if (typeof position !== 'function') {
|
||||
if (typeof offset === 'function') {
|
||||
|
|
|
@ -0,0 +1,29 @@
|
|||
var common = require('../common');
|
||||
var assert = require('assert');
|
||||
var path = require('path');
|
||||
var Buffer = require('buffer').Buffer;
|
||||
var fs = require('fs');
|
||||
var fn = path.join(common.tmpDir, 'write-string-coerce.txt');
|
||||
var data = true;
|
||||
var expected = data + '';
|
||||
var found;
|
||||
|
||||
fs.open(fn, 'w', 0644, function(err, fd) {
|
||||
if (err) throw err;
|
||||
console.log('open done');
|
||||
fs.write(fd, data, 0, 'utf8', function(err, written) {
|
||||
console.log('write done');
|
||||
if (err) throw err;
|
||||
assert.equal(Buffer.byteLength(expected), written);
|
||||
fs.closeSync(fd);
|
||||
found = fs.readFileSync(fn, 'utf8');
|
||||
console.log('expected: "%s"', expected);
|
||||
console.log('found: "%s"', found);
|
||||
fs.unlinkSync(fn);
|
||||
});
|
||||
});
|
||||
|
||||
|
||||
process.on('exit', function() {
|
||||
assert.equal(expected, found);
|
||||
});
|
Loading…
Reference in New Issue