Commit 36dd044cfdb for nodejs
commit 36dd044cfdb20487951a83b75a3341af3025ca17
Author: greenhead <greenheadhq@gmail.com>
Date: Tue Sep 22 18:26:05 2026 +0900
fs: close file streams with fd 0
Signed-off-by: greenhead <greenheadhq@gmail.com>
PR-URL: https://github.com/nodejs/node/pull/66131
Fixes: https://github.com/nodejs/node/issues/57905
Reviewed-By: Luigi Pinca <luigipinca@gmail.com>
Reviewed-By: Antoine du Hamel <duhamelantoine1995@gmail.com>
diff --git a/lib/internal/fs/streams.js b/lib/internal/fs/streams.js
index 4c53f7ea23e..c8c86b59640 100644
--- a/lib/internal/fs/streams.js
+++ b/lib/internal/fs/streams.js
@@ -122,7 +122,7 @@ const FileHandleOperations = (handle) => {
};
function close(stream, err, cb) {
- if (!stream.fd) {
+ if (stream.fd == null) {
cb(err);
} else if (stream.flush) {
stream[kFs].fsync(stream.fd, (flushErr) => {
diff --git a/test/parallel/test-fs-stream-fs-options.js b/test/parallel/test-fs-stream-fs-options.js
index 4e4d17391e0..85f34acc817 100644
--- a/test/parallel/test-fs-stream-fs-options.js
+++ b/test/parallel/test-fs-stream-fs-options.js
@@ -1,6 +1,6 @@
'use strict';
-require('../common');
+const common = require('../common');
const fixtures = require('../common/fixtures');
const fs = require('fs');
const assert = require('assert');
@@ -70,3 +70,17 @@ const originalFs = { fs };
);
});
}
+
+for (const createStream of [fs.createReadStream, fs.createWriteStream]) {
+ const stream = createStream(null, {
+ fd: 0,
+ fs: {
+ ...fs,
+ close: common.mustCall((fd, callback) => {
+ assert.strictEqual(fd, 0);
+ callback(null);
+ }),
+ },
+ });
+ stream.destroy();
+}