-/* Copyright (c) 2005-2021. The SimGrid Team. All rights reserved. */
+/* Copyright (c) 2005-2023. The SimGrid Team. All rights reserved. */
/* This program is free software; you can redistribute it and/or modify it
* under the terms of the license (GNU LGPL) which comes with this package. */
#include "simgrid/Exception.hpp"
-#include "src/kernel/context/Context.hpp"
#include <xbt/config.hpp>
#include <xbt/log.hpp>
throw e;
}
-namespace simgrid {
-namespace xbt {
+namespace simgrid::xbt {
ImpossibleError::~ImpossibleError() = default;
InitializationError::~InitializationError() = default;
XBT_ATTRIB_NORETURN static void handler()
{
// Avoid doing crazy things if we get an uncaught exception inside an uncaught exception
- static std::atomic_flag lock = ATOMIC_FLAG_INIT;
- if (lock.test_and_set()) {
+ if (static std::atomic_flag lock = ATOMIC_FLAG_INIT; lock.test_and_set()) {
XBT_ERROR("Handling an exception raised an exception. Bailing out.");
std::abort();
}
- // Get the current backtrace and exception
- simgrid::xbt::Backtrace bt = simgrid::xbt::Backtrace();
+ // Get the current exception and show backtrace
try {
std::rethrow_exception(std::current_exception());
}
}
XBT_ERROR("Unknown uncaught exception");
}
- show_backtrace(bt);
+ show_backtrace(simgrid::xbt::Backtrace());
std::abort();
}
});
}
-} // namespace xbt
-} // namespace simgrid
+} // namespace simgrid::xbt
void xbt_throw_impossible(const char* file, int line, const char* func)
{