Line data Source code
1 : /////////////////////////////////////////////////////////////////////////////// 2 : // 3 : // Copyright (c) 2023 The Dash Core developers 4 : // Copyright (c) 2015 Microsoft Corporation. All rights reserved. 5 : // 6 : // This code is licensed under the MIT License (MIT). 7 : // 8 : // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 9 : // IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 10 : // FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 11 : // AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 12 : // LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 13 : // OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN 14 : // THE SOFTWARE. 15 : // 16 : /////////////////////////////////////////////////////////////////////////////// 17 : 18 : #include <gsl/assert.h> 19 : #include <logging.h> 20 : 21 : #include <sstream> 22 : namespace gsl 23 : { 24 : namespace details 25 : { 26 0 : [[noreturn]] void terminate(nostd::source_location loc) noexcept 27 : { 28 : #if defined(GSL_MSVC_USE_STL_NOEXCEPTION_WORKAROUND) 29 : (*gsl::details::get_terminate_handler())(); 30 : #else 31 0 : std::ostringstream s; 32 0 : s << "ERROR: error detected null not_null detected at " << loc.file_name() << ":" << loc.line() << ":" 33 0 : << loc.column() << ":" << loc.function_name() 34 0 : << std::endl; 35 0 : std::cerr << s.str() << std::flush; 36 0 : LogPrintf("%s", s.str()); /* Continued */ 37 0 : std::terminate(); 38 : #endif // defined(GSL_MSVC_USE_STL_NOEXCEPTION_WORKAROUND) 39 : } 40 : 41 : } // namespace details 42 : } // namespace gsl 43 :