GeezerVison is showing github.com — fs: add missing HandleScope to FileHandle.close · nodejs/node@b55fba2
File tree
Expand file treeCollapse file tree
Open diff view settings
Expand file treeCollapse file tree
Open diff view settings
Collapse file
Copy file name to clipboardExpand all lines: src/node_file.cc +1Lines changed: 1 addition & 0 deletions | Original file line number | Diff line number | Diff line change |
|---|
@@ -301,6 +301,7 @@ MaybeLocal<Promise> FileHandle::ClosePromise() { |
301 | 301 | close->file_handle()->AfterClose(); |
302 | 302 | Isolate* isolate = close->env()->isolate(); |
303 | 303 | if (req->result < 0) { |
| 304 | + HandleScope handle_scope(isolate); |
304 | 305 | close->Reject(UVException(isolate, req->result, "close")); |
305 | 306 | } else { |
306 | 307 | close->Resolve(); |
|
Collapse file
Copy file name to clipboard +17Lines changed: 17 additions & 0 deletions | Original file line number | Diff line number | Diff line change |
|---|
|
| 1 | +'use strict'; |
| 2 | +const common = require('../common'); |
| 3 | +const assert = require('assert'); |
| 4 | +const fs = require('fs'); |
| 5 | + |
| 6 | +// Test that using FileHandle.close to close an already-closed fd fails |
| 7 | +// with EBADF. |
| 8 | + |
| 9 | +(async function() { |
| 10 | + const fh = await fs.promises.open(__filename); |
| 11 | + fs.closeSync(fh.fd); |
| 12 | + |
| 13 | + assert.rejects(() => fh.close(), { |
| 14 | + code: 'EBADF', |
| 15 | + syscall: 'close' |
| 16 | + }); |
| 17 | +})().then(common.mustCall()); |