mirror of
https://github.com/zebrajr/node.git
synced 2025-12-06 00:20:08 +01:00
fs: correct error message when FileHandle is transferred
PR-URL: https://github.com/nodejs/node/pull/59156 Fixes: https://github.com/nodejs/node/issues/59155 Reviewed-By: Juan José Arboleda <soyjuanarbol@gmail.com> Reviewed-By: Luigi Pinca <luigipinca@gmail.com> Reviewed-By: James M Snell <jasnell@gmail.com> Reviewed-By: LiviaMedeiros <livia@cirno.name>
This commit is contained in:
parent
698cbd0f8b
commit
a93da0a329
|
|
@ -111,6 +111,7 @@ const kHandle = Symbol('kHandle');
|
|||
const kFd = Symbol('kFd');
|
||||
const kRefs = Symbol('kRefs');
|
||||
const kClosePromise = Symbol('kClosePromise');
|
||||
const kCloseReason = Symbol('kCloseReason');
|
||||
const kCloseResolve = Symbol('kCloseResolve');
|
||||
const kCloseReject = Symbol('kCloseReject');
|
||||
const kRef = Symbol('kRef');
|
||||
|
|
@ -389,6 +390,7 @@ class FileHandle extends EventEmitter {
|
|||
|
||||
const handle = this[kHandle];
|
||||
this[kFd] = -1;
|
||||
this[kCloseReason] = 'The FileHandle has been transferred';
|
||||
this[kHandle] = null;
|
||||
this[kRefs] = 0;
|
||||
|
||||
|
|
@ -455,7 +457,7 @@ async function fsCall(fn, handle, ...args) {
|
|||
|
||||
if (handle.fd === -1) {
|
||||
// eslint-disable-next-line no-restricted-syntax
|
||||
const err = new Error('file closed');
|
||||
const err = new Error(handle[kCloseReason] ?? 'file closed');
|
||||
err.code = 'EBADF';
|
||||
err.syscall = fn.name;
|
||||
throw err;
|
||||
|
|
|
|||
|
|
@ -69,6 +69,11 @@ const { once } = require('events');
|
|||
assert.strictEqual(fh.fd, -1);
|
||||
|
||||
port1.postMessage('second message');
|
||||
await assert.rejects(() => fh.read(), {
|
||||
code: 'EBADF',
|
||||
message: 'The FileHandle has been transferred',
|
||||
syscall: 'read'
|
||||
});
|
||||
})().then(common.mustCall());
|
||||
|
||||
(async function() {
|
||||
|
|
|
|||
Loading…
Reference in New Issue
Block a user