diff options
author | Joyee Cheung <joyeec9h3@gmail.com> | 2018-05-27 01:07:29 +0300 |
---|---|---|
committer | Joyee Cheung <joyeec9h3@gmail.com> | 2018-06-03 18:15:17 +0300 |
commit | cd8f06f64f5fba32cf851de4d59c0e22f45b89c7 (patch) | |
tree | b466ffa46727c2bf26e212b57bb6e470c88f82ce /doc | |
parent | 997e97d9cd8c687284feb32e364ef434086d38d5 (diff) |
fs: do not crash when using a closed fs event watcher
Before this commit, when the user calls methods on a closed or
errored fs event watcher, they could hit a crash since the
FSEventWrap in C++ land may have already been destroyed with
the internal pointer set to nullptr. This commit makes sure
that the user cannot hit crashes like that, instead the
methods calling on a closed watcher will be noops.
Also explicitly documents that the watchers should not be used
in `close` and `error` event handlers.
PR-URL: https://github.com/nodejs/node/pull/20985
Fixes: https://github.com/nodejs/node/issues/20738
Fixes: https://github.com/nodejs/node/issues/20297
Reviewed-By: Anna Henningsen <anna@addaleax.net>
Reviewed-By: Benjamin Gruenbaum <benjamingr@gmail.com>
Reviewed-By: Ruben Bridgewater <ruben@bridgewater.de>
Reviewed-By: Ron Korving <ron@ronkorving.nl>
Reviewed-By: Sakthipriyan Vairamani <thechargingvolcano@gmail.com>
Reviewed-By: James M Snell <jasnell@gmail.com>
Reviewed-By: Tiancheng "Timothy" Gu <timothygu99@gmail.com>
Diffstat (limited to 'doc')
-rw-r--r-- | doc/api/fs.md | 6 |
1 files changed, 4 insertions, 2 deletions
diff --git a/doc/api/fs.md b/doc/api/fs.md index b309a1d7e63..5c4dc4901a4 100644 --- a/doc/api/fs.md +++ b/doc/api/fs.md @@ -325,7 +325,8 @@ fs.watch('./tmp', { encoding: 'buffer' }, (eventType, filename) => { added: v10.0.0 --> -Emitted when the watcher stops watching for changes. +Emitted when the watcher stops watching for changes. The closed +`fs.FSWatcher` object is no longer usable in the event handler. ### Event: 'error' <!-- YAML @@ -334,7 +335,8 @@ added: v0.5.8 * `error` {Error} -Emitted when an error occurs while watching the file. +Emitted when an error occurs while watching the file. The errored +`fs.FSWatcher` object is no longer usable in the event handler. ### watcher.close() <!-- YAML |