From 71f6d4c129fc729a5ead08637924d8c0973f2fe9 Mon Sep 17 00:00:00 2001 From: Alexander Slobodeniuk Date: Wed, 1 Nov 2023 10:32:27 +0100 Subject: [PATCH 1/2] gmessages: fix dropping irrelevant log domains If the string of one log domain is contained in another, it was printing both. For example, if G_MESSAGES_DEBUG is "Gtkspecial", it would also keep the logs of the "Gtk" domain Conflict:NA Reference:https://gitlab.gnome.org/GNOME/glib/-/commit/71f6d4c129fc729a5ead08637924d8c0973f2fe9 --- glib/gmessages.c | 22 +++++++++++++++++++++- 1 file changed, 21 insertions(+), 1 deletion(-) diff --git a/glib/gmessages.c b/glib/gmessages.c index d0d38c925a..ebd3a5433e 100644 --- a/glib/gmessages.c +++ b/glib/gmessages.c @@ -2465,6 +2465,26 @@ log_is_old_api (const GLogField *fields, g_strcmp0 (fields[0].value, "1") == 0); } +static gboolean +domain_found (const gchar *domains, + const char *log_domain) +{ + guint len; + const gchar *found; + + len = strlen (log_domain); + + for (found = strstr (domains, log_domain); found; + found = strstr (found + 1, log_domain)) + { + if ((found == domains || found[-1] == ' ') + && (found[len] == 0 || found[len] == ' ')) + return TRUE; + } + + return FALSE; +} + /* * Internal version of g_log_writer_default_would_drop(), which can * read from either a log_domain or an array of fields. This avoids @@ -2504,7 +2524,7 @@ should_drop_message (GLogLevelFlags log_level, } if (strcmp (domains, "all") != 0 && - (log_domain == NULL || !strstr (domains, log_domain))) + (log_domain == NULL || !domain_found (domains, log_domain))) return TRUE; } -- GitLab From 8eddbb9832b9a52a7495cc380e53715d920bb9ea Mon Sep 17 00:00:00 2001 From: Alexander Slobodeniuk Date: Wed, 1 Nov 2023 19:23:35 +0100 Subject: [PATCH 2/2] glib/tests: extend logging test (dropping domains) Conflict:NA Reference:https://gitlab.gnome.org/GNOME/glib/-/commit/8eddbb9832b9a52a7495cc380e53715d920bb9ea --- glib/tests/logging.c | 40 ++++++++++++++++++++++++++++++++++++++++ 1 file changed, 40 insertions(+) diff --git a/glib/tests/logging.c b/glib/tests/logging.c index ea9dcb825e..f4c47e16c8 100644 --- a/glib/tests/logging.c +++ b/glib/tests/logging.c @@ -244,6 +244,46 @@ test_default_handler_would_drop (void) g_assert_false (g_log_writer_default_would_drop (G_LOG_LEVEL_DEBUG, "foo")); g_assert_false (g_log_writer_default_would_drop (1<