+2008-07-19 Matthias Clasen <mclasen@redhat.com>
+
+ 543504 – crash in Epiphany Web Browser: Opening local file
+
+ * gappinfo.c:
+ * gasyncresult.c:
+ * gdesktopappinfo.c:
+ * gdrive.c:
+ * gfile.c:
+ * gicon.c:
+ * gloadableicon.c:
+ * gmount.c:
+ * gseekable.c:
+ * gvolume.c: Register types thread-safely.
+ Patch by Christian Persch
+
2008-07-18 Matthias Clasen <mclasen@redhat.com>
* gcontenttype.c: Remove debug spew
GType
g_app_info_get_type (void)
{
- static GType app_info_type = 0;
+ static volatile gsize g_define_type_id__volatile = 0;
- if (! app_info_type)
+ if (g_once_init_enter (&g_define_type_id__volatile))
{
- static const GTypeInfo app_info_info =
+ const GTypeInfo app_info_info =
{
sizeof (GAppInfoIface), /* class_size */
g_app_info_base_init, /* base_init */
0, /* n_preallocs */
NULL
};
-
- app_info_type =
+ GType g_define_type_id =
g_type_register_static (G_TYPE_INTERFACE, I_("GAppInfo"),
&app_info_info, 0);
- g_type_interface_add_prerequisite (app_info_type, G_TYPE_OBJECT);
+ g_type_interface_add_prerequisite (g_define_type_id, G_TYPE_OBJECT);
+
+ g_once_init_leave (&g_define_type_id__volatile, g_define_type_id);
}
- return app_info_type;
+ return g_define_type_id__volatile;
}
static void
GType
g_async_result_get_type (void)
{
- static GType async_result_type = 0;
+ static volatile gsize g_define_type_id__volatile = 0;
- if (! async_result_type)
+ if (g_once_init_enter (&g_define_type_id__volatile))
{
- static const GTypeInfo async_result_info =
+ const GTypeInfo async_result_info =
{
sizeof (GAsyncResultIface), /* class_size */
g_async_result_base_init, /* base_init */
0, /* n_preallocs */
NULL
};
-
- async_result_type =
+ GType g_define_type_id =
g_type_register_static (G_TYPE_INTERFACE, I_("GAsyncResult"),
&async_result_info, 0);
- g_type_interface_add_prerequisite (async_result_type, G_TYPE_OBJECT);
+ g_type_interface_add_prerequisite (g_define_type_id, G_TYPE_OBJECT);
+
+ g_once_init_leave (&g_define_type_id__volatile, g_define_type_id);
}
- return async_result_type;
+ return g_define_type_id__volatile;
}
static void
GType
g_desktop_app_info_lookup_get_type (void)
{
- static GType desktop_app_info_lookup_type = 0;
+ static volatile gsize g_define_type_id__volatile = 0;
- if (! desktop_app_info_lookup_type)
+ if (g_once_init_enter (&g_define_type_id__volatile))
{
- static const GTypeInfo desktop_app_info_lookup_info =
+ const GTypeInfo desktop_app_info_lookup_info =
{
sizeof (GDesktopAppInfoLookupIface), /* class_size */
g_desktop_app_info_lookup_base_init, /* base_init */
0, /* n_preallocs */
NULL
};
-
- desktop_app_info_lookup_type =
+ GType g_define_type_id =
g_type_register_static (G_TYPE_INTERFACE, I_("GDesktopAppInfoLookup"),
&desktop_app_info_lookup_info, 0);
- g_type_interface_add_prerequisite (desktop_app_info_lookup_type, G_TYPE_OBJECT);
+ g_type_interface_add_prerequisite (g_define_type_id, G_TYPE_OBJECT);
+
+ g_once_init_leave (&g_define_type_id__volatile, g_define_type_id);
}
- return desktop_app_info_lookup_type;
+ return g_define_type_id__volatile;
}
static void
GType
g_drive_get_type (void)
{
- static GType drive_type = 0;
+ static volatile gsize g_define_type_id__volatile = 0;
- if (! drive_type)
+ if (g_once_init_enter (&g_define_type_id__volatile))
{
- static const GTypeInfo drive_info =
+ const GTypeInfo drive_info =
{
sizeof (GDriveIface), /* class_size */
g_drive_base_init, /* base_init */
0, /* n_preallocs */
NULL
};
-
- drive_type =
+ GType g_define_type_id =
g_type_register_static (G_TYPE_INTERFACE, I_("GDrive"),
&drive_info, 0);
- g_type_interface_add_prerequisite (drive_type, G_TYPE_OBJECT);
+ g_type_interface_add_prerequisite (g_define_type_id, G_TYPE_OBJECT);
+
+ g_once_init_leave (&g_define_type_id__volatile, g_define_type_id);
}
- return drive_type;
+ return g_define_type_id__volatile;
}
static void
GType
g_file_get_type (void)
{
- static GType file_type = 0;
+ static volatile gsize g_define_type_id__volatile = 0;
- if (! file_type)
+ if (g_once_init_enter (&g_define_type_id__volatile))
{
- static const GTypeInfo file_info =
+ const GTypeInfo file_info =
{
sizeof (GFileIface), /* class_size */
g_file_base_init, /* base_init */
0, /* n_preallocs */
NULL
};
-
- file_type =
+ GType g_define_type_id =
g_type_register_static (G_TYPE_INTERFACE, I_("GFile"),
&file_info, 0);
- g_type_interface_add_prerequisite (file_type, G_TYPE_OBJECT);
+ g_type_interface_add_prerequisite (g_define_type_id, G_TYPE_OBJECT);
+
+ g_once_init_leave (&g_define_type_id__volatile, g_define_type_id);
}
- return file_type;
+ return g_define_type_id__volatile;
}
static void
GType
g_icon_get_type (void)
{
- static GType icon_type = 0;
+ static volatile gsize g_define_type_id__volatile = 0;
- if (! icon_type)
+ if (g_once_init_enter (&g_define_type_id__volatile))
{
- static const GTypeInfo icon_info =
+ const GTypeInfo icon_info =
{
sizeof (GIconIface), /* class_size */
g_icon_base_init, /* base_init */
0, /* n_preallocs */
NULL
};
-
- icon_type =
+ GType g_define_type_id =
g_type_register_static (G_TYPE_INTERFACE, I_("GIcon"),
&icon_info, 0);
- g_type_interface_add_prerequisite (icon_type, G_TYPE_OBJECT);
+ g_type_interface_add_prerequisite (g_define_type_id, G_TYPE_OBJECT);
+
+ g_once_init_leave (&g_define_type_id__volatile, g_define_type_id);
}
- return icon_type;
+ return g_define_type_id__volatile;
}
static void
GType
g_loadable_icon_get_type (void)
{
- static GType loadable_icon_type = 0;
+ static volatile gsize g_define_type_id__volatile = 0;
- if (! loadable_icon_type)
+ if (g_once_init_enter (&g_define_type_id__volatile))
{
- static const GTypeInfo loadable_icon_info =
+ const GTypeInfo loadable_icon_info =
{
sizeof (GLoadableIconIface), /* class_size */
g_loadable_icon_base_init, /* base_init */
0, /* n_preallocs */
NULL
};
-
- loadable_icon_type =
+ GType g_define_type_id =
g_type_register_static (G_TYPE_INTERFACE, I_("GLoadableIcon"),
&loadable_icon_info, 0);
- g_type_interface_add_prerequisite (loadable_icon_type, G_TYPE_ICON);
+ g_type_interface_add_prerequisite (g_define_type_id, G_TYPE_ICON);
+
+ g_once_init_leave (&g_define_type_id__volatile, g_define_type_id);
}
- return loadable_icon_type;
+ return g_define_type_id__volatile;
}
static void
GType
g_mount_get_type (void)
{
- static GType mount_type = 0;
+ static volatile gsize g_define_type_id__volatile = 0;
- if (! mount_type)
+ if (g_once_init_enter (&g_define_type_id__volatile))
{
- static const GTypeInfo mount_info =
+ const GTypeInfo mount_info =
{
sizeof (GMountIface), /* class_size */
g_mount_base_init, /* base_init */
0, /* n_preallocs */
NULL
};
-
- mount_type =
+ GType g_define_type_id =
g_type_register_static (G_TYPE_INTERFACE, I_("GMount"),
&mount_info, 0);
- g_type_interface_add_prerequisite (mount_type, G_TYPE_OBJECT);
+ g_type_interface_add_prerequisite (g_define_type_id, G_TYPE_OBJECT);
+
+ g_once_init_leave (&g_define_type_id__volatile, g_define_type_id);
}
- return mount_type;
+ return g_define_type_id__volatile;
}
static void
GType
g_seekable_get_type (void)
{
- static GType seekable_type = 0;
+ static volatile gsize g_define_type_id__volatile = 0;
- if (!seekable_type)
+ if (g_once_init_enter (&g_define_type_id__volatile))
{
- static const GTypeInfo seekable_info =
+ const GTypeInfo seekable_info =
{
sizeof (GSeekableIface), /* class_size */
g_seekable_base_init, /* base_init */
0, /* n_preallocs */
NULL
};
-
- seekable_type =
+ GType g_define_type_id =
g_type_register_static (G_TYPE_INTERFACE, I_("GSeekable"),
&seekable_info, 0);
- g_type_interface_add_prerequisite (seekable_type, G_TYPE_OBJECT);
+ g_type_interface_add_prerequisite (g_define_type_id, G_TYPE_OBJECT);
+
+ g_once_init_leave (&g_define_type_id__volatile, g_define_type_id);
}
- return seekable_type;
+ return g_define_type_id__volatile;
}
static void
GType
g_volume_get_type (void)
{
- static GType volume_type = 0;
+ static volatile gsize g_define_type_id__volatile = 0;
- if (! volume_type)
+ if (g_once_init_enter (&g_define_type_id__volatile))
{
- static const GTypeInfo volume_info =
+ const GTypeInfo volume_info =
{
sizeof (GVolumeIface), /* class_size */
g_volume_base_init, /* base_init */
0, /* n_preallocs */
NULL
};
-
- volume_type =
+ GType g_define_type_id =
g_type_register_static (G_TYPE_INTERFACE, I_("GVolume"),
&volume_info, 0);
- g_type_interface_add_prerequisite (volume_type, G_TYPE_OBJECT);
+ g_type_interface_add_prerequisite (g_define_type_id, G_TYPE_OBJECT);
+
+ g_once_init_leave (&g_define_type_id__volatile, g_define_type_id);
}
- return volume_type;
+ return g_define_type_id__volatile;
}
static void