From: JINMEI Tatuya Date: Tue, 8 May 2012 22:57:11 +0000 (-0700) Subject: [1964] use assert() instead of throwing exception in checkExcessPlaceholders. X-Git-Tag: trac2351_base~226^2~158^2~7 X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=18675a2d6a237c775ac8bb91c26c94c7b4219095;p=thirdparty%2Fkea.git [1964] use assert() instead of throwing exception in checkExcessPlaceholders. unfortunatelly, we cannot throw here because it's called from the Formatter destructor. death tests now work for environments where it previously failed. --- diff --git a/src/lib/log/log_formatter.cc b/src/lib/log/log_formatter.cc index c9ecdd3b3f..c728cb5dd3 100644 --- a/src/lib/log/log_formatter.cc +++ b/src/lib/log/log_formatter.cc @@ -15,6 +15,8 @@ #include "config.h" #include +#include + using namespace std; using namespace boost; @@ -52,11 +54,12 @@ checkExcessPlaceholders(string* message, unsigned int placeholder) { const string mark("%" + lexical_cast(placeholder)); const size_t pos(message->find(mark)); if (pos != string::npos) { + // Excess placeholders were found. If we enable the harsh check, + // abort it. Note: ideally we'd like to throw MismatchedPlaceholders, + // but we can't at least for now because this function is called from + // the Formatter's destructor. #ifdef ENABLE_LOGGER_CHECKS - // Excess placeholders were found, so throw an exception - isc_throw(MismatchedPlaceholders, - "Excess logger placeholders still exist in message: " - << *message); + assert("Excess logger placeholders still exist in message" == NULL); #else message->append(" @@Excess logger placeholders still exist@@"); #endif /* ENABLE_LOGGER_CHECKS */ diff --git a/src/lib/log/tests/log_formatter_unittest.cc b/src/lib/log/tests/log_formatter_unittest.cc index 6bb2f02c7e..e67a5081d5 100644 --- a/src/lib/log/tests/log_formatter_unittest.cc +++ b/src/lib/log/tests/log_formatter_unittest.cc @@ -106,12 +106,14 @@ TEST_F(FormatterTest, multiArg) { TEST_F(FormatterTest, mismatchedPlaceholders) { EXPECT_DEATH({ isc::util::unittests::dontCreateCoreDumps(); - Formatter(isc::log::INFO, s("Missing the first %2"), this).arg("missing").arg("argument"); + Formatter(isc::log::INFO, s("Missing the first %2"), this). + arg("missing").arg("argument"); }, ".*"); EXPECT_DEATH({ isc::util::unittests::dontCreateCoreDumps(); - Formatter(isc::log::INFO, s("Too many arguments in %1 %2"), this).arg("only one"); + Formatter(isc::log::INFO, s("Too many arguments in %1 %2"), this). + arg("only one"); }, ".*"); } #endif /* EXPECT_DEATH */