aboutsummaryrefslogtreecommitdiffstats
path: root/e-util/e-extensible.c
diff options
context:
space:
mode:
Diffstat (limited to 'e-util/e-extensible.c')
-rw-r--r--e-util/e-extensible.c24
1 files changed, 11 insertions, 13 deletions
diff --git a/e-util/e-extensible.c b/e-util/e-extensible.c
index 6e49e9dba7..a7523deb21 100644
--- a/e-util/e-extensible.c
+++ b/e-util/e-extensible.c
@@ -94,19 +94,17 @@ extensible_load_extension (GType extension_type,
extension_class = g_type_class_ref (extension_type);
/* Only load extensions that extend the given extensible object. */
- if (g_type_is_a (extensible_type, extension_class->extensible_type)) {
- extension = g_object_new (
- extension_type, "extensible", extensible, NULL);
-
- extensions = extensible_get_extensions (extensible);
- g_ptr_array_add (extensions, extension);
-
- g_type_class_unref (extension_class);
- } else {
- /* keep the class referenced forever, later may anyone need it anyway,
- and unref it may mean module unload, which breaks static strings
- in GType */
- }
+ if (!g_type_is_a (extensible_type, extension_class->extensible_type))
+ goto exit;
+
+ extension = g_object_new (
+ extension_type, "extensible", extensible, NULL);
+
+ extensions = extensible_get_extensions (extensible);
+ g_ptr_array_add (extensions, extension);
+
+exit:
+ g_type_class_unref (extension_class);
}
static void