diff options
Diffstat (limited to 'src/common/scope_exit.h')
| -rw-r--r-- | src/common/scope_exit.h | 9 |
1 files changed, 8 insertions, 1 deletions
diff --git a/src/common/scope_exit.h b/src/common/scope_exit.h index 1176a72b1..68ef5f197 100644 --- a/src/common/scope_exit.h +++ b/src/common/scope_exit.h | |||
| @@ -12,10 +12,17 @@ template <typename Func> | |||
| 12 | struct ScopeExitHelper { | 12 | struct ScopeExitHelper { |
| 13 | explicit ScopeExitHelper(Func&& func) : func(std::move(func)) {} | 13 | explicit ScopeExitHelper(Func&& func) : func(std::move(func)) {} |
| 14 | ~ScopeExitHelper() { | 14 | ~ScopeExitHelper() { |
| 15 | func(); | 15 | if (active) { |
| 16 | func(); | ||
| 17 | } | ||
| 18 | } | ||
| 19 | |||
| 20 | void Cancel() { | ||
| 21 | active = false; | ||
| 16 | } | 22 | } |
| 17 | 23 | ||
| 18 | Func func; | 24 | Func func; |
| 25 | bool active{true}; | ||
| 19 | }; | 26 | }; |
| 20 | 27 | ||
| 21 | template <typename Func> | 28 | template <typename Func> |