Skip to content

Commit fa829b0

Browse files
sciolistkoichik
authored andcommitted
convert nonbuffer data to string in fs.writeFile/Sync
Fixes #657.
1 parent 2fe780b commit fa829b0

File tree

2 files changed

+23
-3
lines changed

2 files changed

+23
-3
lines changed

lib/fs.js

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -566,7 +566,7 @@ fs.writeFile = function(path, data, encoding_, callback) {
566566
if (openErr) {
567567
if (callback) callback(openErr);
568568
} else {
569-
var buffer = Buffer.isBuffer(data) ? data : new Buffer(data, encoding);
569+
var buffer = Buffer.isBuffer(data) ? data : new Buffer('' + data, encoding);
570570
writeAll(fd, buffer, 0, buffer.length, callback);
571571
}
572572
});
@@ -575,7 +575,7 @@ fs.writeFile = function(path, data, encoding_, callback) {
575575
fs.writeFileSync = function(path, data, encoding) {
576576
var fd = fs.openSync(path, 'w');
577577
if (!Buffer.isBuffer(data)) {
578-
data = new Buffer(data, encoding || 'utf8');
578+
data = new Buffer('' + data, encoding || 'utf8');
579579
}
580580
var written = 0;
581581
var length = data.length;

test/simple/test-fs-write-file.js

Lines changed: 21 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -28,6 +28,7 @@ var filename = join(common.fixturesDir, 'test.txt');
2828

2929
common.error('writing to ' + filename);
3030

31+
var n = 220;
3132
var s = '南越国是前203年至前111年存在于岭南地区的一个国家,国都位于番禺,疆域包括今天中国的广东、' +
3233
'广西两省区的大部份地区,福建省、湖南、贵州、云南的一小部份地区和越南的北部。' +
3334
'南越国是秦朝灭亡后,由南海郡尉赵佗于前203年起兵兼并桂林郡和象郡后建立。' +
@@ -71,11 +72,30 @@ fs.writeFile(filename2, buf, function(e) {
7172
});
7273
});
7374

75+
// test that writeFile accepts numbers.
76+
var filename3 = join(common.fixturesDir, 'test3.txt');
77+
common.error('writing to ' + filename3);
78+
79+
fs.writeFile(filename3, n, function(e) {
80+
if (e) throw e;
81+
82+
ncallbacks++;
83+
common.error('file3 written');
84+
85+
fs.readFile(filename3, function(e, buffer) {
86+
if (e) throw e;
87+
common.error('file3 read');
88+
ncallbacks++;
89+
assert.equal(Buffer.byteLength('' + n), buffer.length);
90+
});
91+
});
92+
7493

7594
process.addListener('exit', function() {
7695
common.error('done');
77-
assert.equal(4, ncallbacks);
96+
assert.equal(6, ncallbacks);
7897

7998
fs.unlinkSync(filename);
8099
fs.unlinkSync(filename2);
100+
fs.unlinkSync(filename3);
81101
});

0 commit comments

Comments
 (0)