summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorThomas Haller <thaller@redhat.com>2015-09-08 21:39:40 +0200
committerThomas Haller <thaller@redhat.com>2015-09-09 11:52:33 +0200
commite7d66f1df61ebdc7652ba34a4e1baddcc86b9e26 (patch)
treed26720d8b844f15c7a796df5a68a27505ff59b75
parent8318672fe99773b0009cf68d291ce1f535309565 (diff)
downloadNetworkManager-e7d66f1df61ebdc7652ba34a4e1baddcc86b9e26.tar.gz
config: workaround invocation of "config-changed" signal
There seems to be a bug in glib/ffi that hits on s390x/ppc64 architecture. It causes @changes in nm-dns-manager.c:config_changed_cb() to be NONE, although it is clearly set (see the related bug rh #1260577 for glib). Workaround this, by making the argument type a plain guint. Note that the ill behavior is caught by test_config_signal() in "src/tests/config/test-config.c". Related: https://bugzilla.redhat.com/show_bug.cgi?id=1062301
-rw-r--r--src/nm-config.c12
-rw-r--r--src/tests/config/test-config.c5
2 files changed, 15 insertions, 2 deletions
diff --git a/src/nm-config.c b/src/nm-config.c
index 03f9788ecc..0ccb6e6af2 100644
--- a/src/nm-config.c
+++ b/src/nm-config.c
@@ -1890,7 +1890,17 @@ nm_config_class_init (NMConfigClass *config_class)
G_SIGNAL_RUN_FIRST,
0,
NULL, NULL, NULL,
- G_TYPE_NONE, 3, NM_TYPE_CONFIG_DATA, NM_TYPE_CONFIG_CHANGE_FLAGS, NM_TYPE_CONFIG_DATA);
+ G_TYPE_NONE,
+ 3,
+ NM_TYPE_CONFIG_DATA,
+ /* Use plain guint type for changes argument. This avoids
+ * glib/ffi bug https://bugzilla.redhat.com/show_bug.cgi?id=1260577 */
+ /* NM_TYPE_CONFIG_CHANGE_FLAGS, */
+ G_TYPE_UINT,
+ NM_TYPE_CONFIG_DATA);
+
+ G_STATIC_ASSERT_EXPR (sizeof (guint) == sizeof (NMConfigChangeFlags));
+ G_STATIC_ASSERT_EXPR (((gint64) ((NMConfigChangeFlags) -1)) > ((gint64) 0));
}
static void
diff --git a/src/tests/config/test-config.c b/src/tests/config/test-config.c
index d8aff9c3f5..b021fe028a 100644
--- a/src/tests/config/test-config.c
+++ b/src/tests/config/test-config.c
@@ -807,7 +807,10 @@ test_config_signal (void)
nm_config_reload (config, SIGHUP);
- /* test with subscribing two signals... */
+ /* test with subscribing two signals...
+ *
+ * This test exposes glib bug https://bugzilla.redhat.com/show_bug.cgi?id=1260577
+ * for which we however have a workaround in 'nm-config.c' */
g_signal_connect (G_OBJECT (config),
NM_CONFIG_SIGNAL_CONFIG_CHANGED,
G_CALLBACK (_test_signal_config_changed_cb2),