GV

GeezerVison

The World Wide Web, restored to 800 pixels of glory.

Home|About|Gaming cabinet|Archives|How it works|Starter sites

On this site

  • Sign in
  • ActionsCI/CD and automation
  • CodespacesCloud development environments
  • All Features
  • Documentation
  • Training
  • Certifications
  • Build with Copilot
  • Customize Copilot
  • Integrations
  • Trending repos
  • GitHub Sponsors
  • Developer articles
  • Enterprises

This view

  • Original page
  • New address

GeezerVison is showing github.com — fs: correct error message when FileHandle is transferred · nodejs/node@ad2089e

File tree

Expand file treeCollapse file tree
Open diff view settings
Filter options
  • lib/internal/fs
    • promises.js
  • test/parallel
    • test-worker-message-port-transfer-filehandle.js
Expand file treeCollapse file tree
Open diff view settings
Collapse file

‎lib/internal/fs/promises.js‎

Copy file name to clipboardExpand all lines: lib/internal/fs/promises.js
+3-1Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -111,6 +111,7 @@ const kHandle = Symbol('kHandle');
111111
const kFd = Symbol('kFd');
112112
const kRefs = Symbol('kRefs');
113113
const kClosePromise = Symbol('kClosePromise');
114+
const kCloseReason = Symbol('kCloseReason');
114115
const kCloseResolve = Symbol('kCloseResolve');
115116
const kCloseReject = Symbol('kCloseReject');
116117
const kRef = Symbol('kRef');
@@ -389,6 +390,7 @@ class FileHandle extends EventEmitter {
389390

390391
const handle = this[kHandle];
391392
this[kFd] = -1;
393+
this[kCloseReason] = 'The FileHandle has been transferred';
392394
this[kHandle] = null;
393395
this[kRefs] = 0;
394396

@@ -455,7 +457,7 @@ async function fsCall(fn, handle, ...args) {
455457

456458
if (handle.fd === -1) {
457459
// eslint-disable-next-line no-restricted-syntax
458-
const err = new Error('file closed');
460+
const err = new Error(handle[kCloseReason] ?? 'file closed');
459461
err.code = 'EBADF';
460462
err.syscall = fn.name;
461463
throw err;
Collapse file

‎test/parallel/test-worker-message-port-transfer-filehandle.js‎

Copy file name to clipboardExpand all lines: test/parallel/test-worker-message-port-transfer-filehandle.js
+5Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -69,6 +69,11 @@ const { once } = require('events');
6969
assert.strictEqual(fh.fd, -1);
7070

7171
port1.postMessage('second message');
72+
await assert.rejects(() => fh.read(), {
73+
code: 'EBADF',
74+
message: 'The FileHandle has been transferred',
75+
syscall: 'read'
76+
});
7277
})().then(common.mustCall());
7378

7479
(async function() {

0 commit comments

Comments
0 (0)
You are visitor 01402503 — GeezerVison does not store the pages you look up.
Best viewed with Netscape Navigator 4.7 or Internet Explorer 6 at 800×600. No cookies required.