aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/libutil/util.cc26
1 files changed, 11 insertions, 15 deletions
diff --git a/src/libutil/util.cc b/src/libutil/util.cc
index 03cbd7765..44463161f 100644
--- a/src/libutil/util.cc
+++ b/src/libutil/util.cc
@@ -1599,28 +1599,24 @@ void triggerInterrupt()
{
InterruptCallbacks::Token i = 0;
- std::function<void()> callback;
- do {
+ while (true) {
+ std::function<void()> callback;
{
auto interruptCallbacks(_interruptCallbacks.lock());
auto lb = interruptCallbacks->callbacks.lower_bound(i);
- if (lb != interruptCallbacks->callbacks.end()) {
- callback = lb->second;
- i = lb->first + 1;
- } else {
- callback = nullptr;
- }
+ if (lb == interruptCallbacks->callbacks.end())
+ break;
+
+ callback = lb->second;
+ i = lb->first + 1;
}
- if (callback) {
- try {
- callback();
- } catch (...) {
- ignoreException();
- }
+ try {
+ callback();
+ } catch (...) {
+ ignoreException();
}
}
- while (callback);
}
}