mirror of
https://github.com/nodejs/node.git
synced 2024-11-21 10:59:27 +00:00
74e0ca3f49
PR-URL: https://github.com/nodejs/node/pull/49125 Reviewed-By: Michaël Zasso <targos@protonmail.com> Reviewed-By: Antoine du Hamel <duhamelantoine1995@gmail.com> Reviewed-By: Chemi Atlow <chemi@atlow.co.il>
38 lines
934 B
JavaScript
38 lines
934 B
JavaScript
// Flags: --expose-gc
|
|
'use strict';
|
|
const common = require('../common');
|
|
const tmpdir = require('../common/tmpdir');
|
|
const assert = require('assert');
|
|
|
|
// Regression test for https://github.com/nodejs/node-v0.x-archive/issues/814:
|
|
// Make sure that Buffers passed to fs.write() are not garbage-collected
|
|
// even when the callback is being reused.
|
|
|
|
const fs = require('fs');
|
|
|
|
tmpdir.refresh();
|
|
const filename = tmpdir.resolve('test.txt');
|
|
const fd = fs.openSync(filename, 'w');
|
|
|
|
const size = 16 * 1024;
|
|
const writes = 1000;
|
|
let done = 0;
|
|
|
|
const ondone = common.mustSucceed(() => {
|
|
if (++done < writes) {
|
|
if (done % 25 === 0) global.gc();
|
|
setImmediate(write);
|
|
} else {
|
|
assert.strictEqual(
|
|
fs.readFileSync(filename, 'utf8'),
|
|
'x'.repeat(writes * size));
|
|
fs.closeSync(fd);
|
|
}
|
|
}, writes);
|
|
|
|
write();
|
|
function write() {
|
|
const buf = Buffer.alloc(size, 'x');
|
|
fs.write(fd, buf, 0, buf.length, -1, ondone);
|
|
}
|