diff options
author | Neil <nyamatongwe@gmail.com> | 2021-05-28 14:46:21 +1000 |
---|---|---|
committer | Neil <nyamatongwe@gmail.com> | 2021-05-28 14:46:21 +1000 |
commit | c9b2423aaed459c68dd8f43b1de0edee4eb287c8 (patch) | |
tree | f9bfdfa908e5a0a242fb2a00f1ed988682f568c5 /src/Document.cxx | |
parent | a20684909b6edadae8e0c8c9ebc0d15d7fc128ba (diff) | |
download | scintilla-mirror-c9b2423aaed459c68dd8f43b1de0edee4eb287c8.tar.gz |
Better exception handling for noexcept methods. More accurate noexcept marking.
Diffstat (limited to 'src/Document.cxx')
-rw-r--r-- | src/Document.cxx | 18 |
1 files changed, 12 insertions, 6 deletions
diff --git a/src/Document.cxx b/src/Document.cxx index 70a711028..c20f7beea 100644 --- a/src/Document.cxx +++ b/src/Document.cxx @@ -2477,12 +2477,18 @@ bool Document::AddWatcher(DocWatcher *watcher, void *userData) { return true; } -bool Document::RemoveWatcher(DocWatcher *watcher, void *userData) { - std::vector<WatcherWithUserData>::iterator it = - std::find(watchers.begin(), watchers.end(), WatcherWithUserData(watcher, userData)); - if (it != watchers.end()) { - watchers.erase(it); - return true; +bool Document::RemoveWatcher(DocWatcher *watcher, void *userData) noexcept { + try { + // This can never fail as WatcherWithUserData constructor and == are noexcept + // but std::find is not noexcept. + std::vector<WatcherWithUserData>::iterator it = + std::find(watchers.begin(), watchers.end(), WatcherWithUserData(watcher, userData)); + if (it != watchers.end()) { + watchers.erase(it); + return true; + } + } catch (...) { + // Ignore any exception } return false; } |