about summary refs log tree commit diff
path: root/libnm-core/nm-errors.c
diff options
context:
space:
mode:
Diffstat (limited to 'libnm-core/nm-errors.c')
-rw-r--r--libnm-core/nm-errors.c26
1 files changed, 10 insertions, 16 deletions
diff --git a/libnm-core/nm-errors.c b/libnm-core/nm-errors.c
index beef95c7..d6aa1ed3 100644
--- a/libnm-core/nm-errors.c
+++ b/libnm-core/nm-errors.c
@@ -1,4 +1,3 @@
-/* -*- Mode: C; tab-width: 4; indent-tabs-mode: t; c-basic-offset: 4 -*- */
 /*
  * This library is free software; you can redistribute it and/or
  * modify it under the terms of the GNU Lesser General Public
@@ -39,21 +38,19 @@ register_error_domain (GQuark domain,
                        const char *interface,
                        GType enum_type)
 {
-	GEnumClass *enum_class;
-	GEnumValue *e;
-	char *error_name;
-	int i;
+	nm_auto_unref_gtypeclass GEnumClass *enum_class = g_type_class_ref (enum_type);
+	guint i;
 
-	enum_class = g_type_class_ref (enum_type);
 	for (i = 0; i < enum_class->n_values; i++) {
-		e = &enum_class->values[i];
-		g_assert (strchr (e->value_nick, '-') == NULL);
-		error_name = g_strdup_printf ("%s.%s", interface, e->value_nick);
-		g_dbus_error_register_error (domain, e->value, error_name);
-		g_free (error_name);
-	}
+		const GEnumValue *e = &enum_class->values[i];
+		char error_name[200];
+
+		nm_assert (e && e->value_nick && !strchr (e->value_nick, '-'));
 
-	g_type_class_unref (enum_class);
+		nm_sprintf_buf (error_name, "%s.%s", interface, e->value_nick);
+		if (!g_dbus_error_register_error (domain, e->value, error_name))
+			nm_assert_not_reached ();
+	}
 }
 
 void
@@ -77,9 +74,6 @@ _nm_dbus_errors_init (void)
 	register_error_domain (NM_SETTINGS_ERROR,
 	                       NM_DBUS_INTERFACE_SETTINGS,
 	                       NM_TYPE_SETTINGS_ERROR);
-	register_error_domain (NM_SETTINGS_ERROR,
-	                       NM_DBUS_INTERFACE_SETTINGS,
-	                       NM_TYPE_SETTINGS_ERROR);
 	register_error_domain (NM_VPN_PLUGIN_ERROR,
 	                       NM_DBUS_VPN_ERROR_PREFIX,
 	                       NM_TYPE_VPN_PLUGIN_ERROR);