From ccb0ca4493d8276c3a14b8c764c7fecc4fedc1fa Mon Sep 17 00:00:00 2001 From: Lubomir Rintel Date: Fri, 15 May 2015 18:27:19 +0200 Subject: [PATCH] libnm-core,libnm-util: avoid calling a constructor It yields completely unpredictable results on Ubuntu 12.04 (the global variable successfully comparing to NULL despite demonstrably not NULL). Possibly a toolchain bug. --- libnm-core/nm-setting.c | 8 +++++++- libnm-util/nm-setting.c | 8 +++++++- 2 files changed, 14 insertions(+), 2 deletions(-) diff --git a/libnm-core/nm-setting.c b/libnm-core/nm-setting.c index b78d9376ff..0791b0d198 100644 --- a/libnm-core/nm-setting.c +++ b/libnm-core/nm-setting.c @@ -91,7 +91,7 @@ _nm_gtype_hash (gconstpointer v) return *((const GType *) v); } -static void __attribute__((constructor)) +static void _ensure_registered (void) { if (G_UNLIKELY (registered_settings == NULL)) { @@ -103,6 +103,12 @@ _ensure_registered (void) } } +static void __attribute__((constructor)) +_ensure_registered_constructor (void) +{ + _ensure_registered (); +} + #define _ensure_setting_info(self, priv) \ G_STMT_START { \ NMSettingPrivate *_priv_esi = (priv); \ diff --git a/libnm-util/nm-setting.c b/libnm-util/nm-setting.c index 105981bc34..35ae01daf8 100644 --- a/libnm-util/nm-setting.c +++ b/libnm-util/nm-setting.c @@ -99,7 +99,7 @@ _nm_gtype_hash (gconstpointer v) return *((const GType *) v); } -static void __attribute__((constructor)) +static void _ensure_registered (void) { if (G_UNLIKELY (registered_settings == NULL)) { @@ -112,6 +112,12 @@ _ensure_registered (void) } } +static void __attribute__((constructor)) +_ensure_registered_constructor (void) +{ + _ensure_registered (); +} + #define _ensure_setting_info(self, priv) \ G_STMT_START { \ NMSettingPrivate *_priv_esi = (priv); \