Fix possible resursion in FMT_ASSERT

Use std::fprintf for assertion message output preventing infinite
recursion when output to stderr is limited or broken.
This commit is contained in:
Tobias Hammer 2020-06-26 10:22:26 +02:00
parent 8630a8f5ff
commit e350e011d2

View File

@ -49,7 +49,7 @@ FMT_BEGIN_NAMESPACE
namespace detail { namespace detail {
FMT_FUNC void assert_fail(const char* file, int line, const char* message) { FMT_FUNC void assert_fail(const char* file, int line, const char* message) {
print(stderr, "{}:{}: assertion failed: {}", file, line, message); std::fprintf(stderr, "%s:%d: assertion failed: %s", file, line, message);
// Chosen instead of std::abort to satisfy Clang in CUDA mode during device // Chosen instead of std::abort to satisfy Clang in CUDA mode during device
// code pass. // code pass.
std::terminate(); std::terminate();