bus: Fix maximum log level for different groups after removal of a logger
The log level was incorrectly set to the same value for all groups.
Fixes: dac15e03c8 ("bus: Fix maximum log levels when mixing log/vlog
implementing loggers")
This commit is contained in:
@@ -233,6 +233,7 @@ static inline void unregister_logger(private_bus_t *this, logger_t *logger)
|
|||||||
enumerator_t *enumerator;
|
enumerator_t *enumerator;
|
||||||
linked_list_t *loggers;
|
linked_list_t *loggers;
|
||||||
log_entry_t *entry, *found = NULL;
|
log_entry_t *entry, *found = NULL;
|
||||||
|
debug_t group;
|
||||||
|
|
||||||
loggers = this->loggers[DBG_MAX];
|
loggers = this->loggers[DBG_MAX];
|
||||||
enumerator = loggers->create_enumerator(loggers);
|
enumerator = loggers->create_enumerator(loggers);
|
||||||
@@ -249,17 +250,16 @@ static inline void unregister_logger(private_bus_t *this, logger_t *logger)
|
|||||||
|
|
||||||
if (found)
|
if (found)
|
||||||
{
|
{
|
||||||
level_t level = LEVEL_SILENT, vlevel = LEVEL_SILENT;
|
|
||||||
debug_t group;
|
|
||||||
|
|
||||||
for (group = 0; group < DBG_MAX; group++)
|
for (group = 0; group < DBG_MAX; group++)
|
||||||
{
|
{
|
||||||
if (found->levels[group] > LEVEL_SILENT)
|
if (found->levels[group] > LEVEL_SILENT)
|
||||||
{
|
{
|
||||||
|
level_t level = LEVEL_SILENT, vlevel = LEVEL_SILENT;
|
||||||
|
|
||||||
loggers = this->loggers[group];
|
loggers = this->loggers[group];
|
||||||
loggers->remove(loggers, found, NULL);
|
loggers->remove(loggers, found, NULL);
|
||||||
loggers->find_first(loggers, (linked_list_match_t)find_max_levels, NULL,
|
loggers->find_first(loggers, (linked_list_match_t)find_max_levels,
|
||||||
&group, &level, &vlevel);
|
NULL, group, &level, &vlevel);
|
||||||
set_level(&this->max_level[group], level);
|
set_level(&this->max_level[group], level);
|
||||||
set_level(&this->max_vlevel[group], vlevel);
|
set_level(&this->max_vlevel[group], vlevel);
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user