On 9/08/2012 12:12 a.m., Alexander Komyagin wrote:
Following patch fixes nested debug() calls problem. Since debugs() is a macros, it should not change static Debugs::level before putting debug message to the internal stream. Otherwise we encounter problems when debug message itself contains calls to debugs().--- src/Debug.h 2012-03-07 05:42:55.000000000 +0300 +++ src/Debug.h 2012-08-08 14:49:20.000000000 +0400 @@ -106,8 +106,9 @@ /* Debug stream */ #define debugs(SECTION, LEVEL, CONTENT) \ do { \ - if ((Debug::level = (LEVEL)) <= Debug::Levels[SECTION]) { \ + if ((LEVEL) <= Debug::Levels[SECTION]) { \ Debug::getDebugOut() << CONTENT; \ + Debug::level = (LEVEL); \ Debug::finishDebug(); \ } \ } while (/*CONSTCOND*/ 0)
Looks okay. How much testing has this had? Amos
