mirror of
https://github.com/monero-project/monero.git
synced 2025-08-07 05:32:27 -04:00
Merge pull request #9809
8c43e33e3
logging: Fix easylogging++ init with blank config (iamamyth)
This commit is contained in:
commit
f2d765afc4
2 changed files with 7 additions and 5 deletions
7
external/easylogging++/easylogging++.h
vendored
7
external/easylogging++/easylogging++.h
vendored
|
@ -1993,7 +1993,7 @@ class TypedConfigurations : public base::threading::ThreadSafe {
|
||||||
}
|
}
|
||||||
|
|
||||||
template <typename Conf_T>
|
template <typename Conf_T>
|
||||||
inline Conf_T& getConfigByRef(Level level, std::unordered_map<Level, Conf_T>* confMap, const char* confName) {
|
inline const Conf_T& getConfigByRef(Level level, std::unordered_map<Level, Conf_T>* confMap, const char* confName) {
|
||||||
base::threading::ScopedLock scopedLock(lock());
|
base::threading::ScopedLock scopedLock(lock());
|
||||||
return unsafeGetConfigByRef(level, confMap, confName); // This is not unsafe anymore - mutex locked in scope
|
return unsafeGetConfigByRef(level, confMap, confName); // This is not unsafe anymore - mutex locked in scope
|
||||||
}
|
}
|
||||||
|
@ -2016,8 +2016,9 @@ class TypedConfigurations : public base::threading::ThreadSafe {
|
||||||
}
|
}
|
||||||
|
|
||||||
template <typename Conf_T>
|
template <typename Conf_T>
|
||||||
Conf_T& unsafeGetConfigByRef(Level level, std::unordered_map<Level, Conf_T>* confMap, const char* confName) {
|
const Conf_T& unsafeGetConfigByRef(Level level, std::unordered_map<Level, Conf_T>* confMap, const char* confName) {
|
||||||
ELPP_UNUSED(confName);
|
ELPP_UNUSED(confName);
|
||||||
|
static const Conf_T empty;
|
||||||
typename std::unordered_map<Level, Conf_T>::iterator it = confMap->find(level);
|
typename std::unordered_map<Level, Conf_T>::iterator it = confMap->find(level);
|
||||||
if (it == confMap->end()) {
|
if (it == confMap->end()) {
|
||||||
try {
|
try {
|
||||||
|
@ -2026,7 +2027,7 @@ class TypedConfigurations : public base::threading::ThreadSafe {
|
||||||
ELPP_INTERNAL_ERROR("Unable to get configuration [" << confName << "] for level ["
|
ELPP_INTERNAL_ERROR("Unable to get configuration [" << confName << "] for level ["
|
||||||
<< LevelHelper::convertToString(level) << "]"
|
<< LevelHelper::convertToString(level) << "]"
|
||||||
<< std::endl << "Please ensure you have properly configured logger.", false);
|
<< std::endl << "Please ensure you have properly configured logger.", false);
|
||||||
throw; // The exception has to be rethrown, to abort a branch leading to UB.
|
return empty;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return it->second;
|
return it->second;
|
||||||
|
|
|
@ -209,9 +209,10 @@ TEST(logging, operator_equals_segfault)
|
||||||
log2 = log1;
|
log2 = log1;
|
||||||
}
|
}
|
||||||
|
|
||||||
TEST(logging, empty_configurations_throws)
|
TEST(logging, empty_configuration)
|
||||||
{
|
{
|
||||||
el::Logger log1("id1", nullptr);
|
el::Logger log1("id1", nullptr);
|
||||||
const el::Configurations cfg;
|
const el::Configurations cfg;
|
||||||
EXPECT_ANY_THROW(log1.configure(cfg));
|
EXPECT_NO_THROW(log1.configure(cfg));
|
||||||
|
EXPECT_EQ(log1.typedConfigurations()->filename(el::Level::Info), "");
|
||||||
}
|
}
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue