diff --git a/include/fmt/core.h b/include/fmt/core.h index 346f7616..14ab40f7 100644 --- a/include/fmt/core.h +++ b/include/fmt/core.h @@ -231,8 +231,9 @@ void assert_fail(const char* file, int line, const char* message); # define FMT_ASSERT(condition, message) # else # define FMT_ASSERT(condition, message) \ - if (!(condition)) \ - fmt::internal::assert_fail(__FILE__, __LINE__, (message)) + ((condition) \ + ? void() \ + : fmt::internal::assert_fail(__FILE__, __LINE__, (message))) # endif #endif diff --git a/test/assert-test.cc b/test/assert-test.cc index 0679cee6..26a87a7b 100644 --- a/test/assert-test.cc +++ b/test/assert-test.cc @@ -20,3 +20,14 @@ TEST(AssertTest, Fail) { EXPECT_DEBUG_DEATH_IF_SUPPORTED(FMT_ASSERT(false, "don't panic!"), "don't panic!"); } + +bool test_condition = false; + +TEST(AssertTest, DanglingElse) { + bool executed_else = false; + if (test_condition) + FMT_ASSERT(true, ""); + else + executed_else = true; + EXPECT_TRUE(executed_else); +}