diff options
Diffstat (limited to 'src/keeper.cpp')
| -rw-r--r-- | src/keeper.cpp | 9 |
1 files changed, 5 insertions, 4 deletions
diff --git a/src/keeper.cpp b/src/keeper.cpp index c8c470f..ca2a80d 100644 --- a/src/keeper.cpp +++ b/src/keeper.cpp | |||
| @@ -952,15 +952,15 @@ void Keepers::collectGarbage() | |||
| 952 | // ################################################################################################# | 952 | // ################################################################################################# |
| 953 | 953 | ||
| 954 | 954 | ||
| 955 | void Keepers::close() | 955 | bool Keepers::close() |
| 956 | { | 956 | { |
| 957 | if (isClosing.test_and_set(std::memory_order_release)) { | 957 | if (isClosing.test_and_set(std::memory_order_release)) { |
| 958 | assert(false); // should never close more than once in practice | 958 | return false; // should never close more than once in practice |
| 959 | return; | ||
| 960 | } | 959 | } |
| 961 | 960 | ||
| 961 | // We may have not initialized the keepers if an error was raised in Universe::Create because of bad settings | ||
| 962 | if (std::holds_alternative<std::monostate>(keeper_array)) { | 962 | if (std::holds_alternative<std::monostate>(keeper_array)) { |
| 963 | return; | 963 | return true; |
| 964 | } | 964 | } |
| 965 | 965 | ||
| 966 | auto _closeOneKeeper = [](Keeper& keeper_) { | 966 | auto _closeOneKeeper = [](Keeper& keeper_) { |
| @@ -989,6 +989,7 @@ void Keepers::close() | |||
| 989 | } | 989 | } |
| 990 | 990 | ||
| 991 | keeper_array.emplace<std::monostate>(); | 991 | keeper_array.emplace<std::monostate>(); |
| 992 | return true; | ||
| 992 | } | 993 | } |
| 993 | 994 | ||
| 994 | // ################################################################################################# | 995 | // ################################################################################################# |
