try to prevent optimizer to remove null sink code altogether

This commit is contained in:
gabime 2019-07-17 14:38:01 +03:00
parent a7c06eadd0
commit 1f3dea60d3

View File

@ -8,6 +8,7 @@
#include "spdlog/details/synchronous_factory.h" #include "spdlog/details/synchronous_factory.h"
#include <mutex> #include <mutex>
#include <stdio.h>
namespace spdlog { namespace spdlog {
namespace sinks { namespace sinks {
@ -16,7 +17,16 @@ template<typename Mutex>
class null_sink : public base_sink<Mutex> class null_sink : public base_sink<Mutex>
{ {
protected: protected:
void sink_it_(const details::log_msg &) override {} void sink_it_(const details::log_msg &msg) override
{
// prevent optimizer to remove this sink altogether (and do useful check while at it).
if(msg.level == level::off)
{
printf("Should never not be called if level is off!\n");
}
assert(msg.level != level::off);
}
void flush_() override {} void flush_() override {}
}; };