mirror of
				https://gitlab.gnome.org/GNOME/glib.git
				synced 2025-10-31 16:32:18 +01:00 
			
		
		
		
	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
svn path=/branches/glib-2-16/; revision=7214
			
			
This commit is contained in:
		| @@ -1,3 +1,21 @@ | ||||
| 2008-07-19  Matthias Clasen  <mclasen@redhat.com> | ||||
|  | ||||
| 	Merge from trunk: | ||||
|  | ||||
| 	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-19  Matthias Clasen  <mclasen@redhat.com> | ||||
|  | ||||
| 	Merge from trunk: | ||||
|   | ||||
| @@ -46,11 +46,11 @@ static void g_app_info_class_init (gpointer g_class, | ||||
| 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 */ | ||||
| @@ -62,15 +62,16 @@ g_app_info_get_type (void) | ||||
| 	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 | ||||
|   | ||||
| @@ -115,11 +115,11 @@ static void g_async_result_class_init (gpointer g_class, | ||||
| 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 */ | ||||
| @@ -131,15 +131,16 @@ g_async_result_get_type (void) | ||||
| 	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 | ||||
|   | ||||
| @@ -2484,11 +2484,11 @@ static void g_desktop_app_info_lookup_class_init (gpointer g_class, | ||||
| 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 */ | ||||
| @@ -2500,15 +2500,16 @@ g_desktop_app_info_lookup_get_type (void) | ||||
| 	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 | ||||
|   | ||||
							
								
								
									
										15
									
								
								gio/gdrive.c
									
									
									
									
									
								
							
							
						
						
									
										15
									
								
								gio/gdrive.c
									
									
									
									
									
								
							| @@ -59,11 +59,11 @@ static void g_drive_class_init (gpointer g_class, | ||||
| 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 */ | ||||
| @@ -75,15 +75,16 @@ g_drive_get_type (void) | ||||
| 	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 | ||||
|   | ||||
							
								
								
									
										15
									
								
								gio/gfile.c
									
									
									
									
									
								
							
							
						
						
									
										15
									
								
								gio/gfile.c
									
									
									
									
									
								
							| @@ -236,11 +236,11 @@ static gboolean           g_file_real_copy_finish                 (GFile | ||||
| 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 */ | ||||
| @@ -252,15 +252,16 @@ g_file_get_type (void) | ||||
| 	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 | ||||
|   | ||||
							
								
								
									
										15
									
								
								gio/gicon.c
									
									
									
									
									
								
							
							
						
						
									
										15
									
								
								gio/gicon.c
									
									
									
									
									
								
							| @@ -51,11 +51,11 @@ static void g_icon_class_init (gpointer g_class, | ||||
| 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 */ | ||||
| @@ -67,15 +67,16 @@ g_icon_get_type (void) | ||||
| 	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 | ||||
|   | ||||
| @@ -53,11 +53,11 @@ static void          g_loadable_icon_class_init       (gpointer              g_c | ||||
| 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 */ | ||||
| @@ -69,15 +69,16 @@ g_loadable_icon_get_type (void) | ||||
| 	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 | ||||
|   | ||||
							
								
								
									
										15
									
								
								gio/gmount.c
									
									
									
									
									
								
							
							
						
						
									
										15
									
								
								gio/gmount.c
									
									
									
									
									
								
							| @@ -68,11 +68,11 @@ static void g_mount_class_init (gpointer g_class, | ||||
| 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 */ | ||||
| @@ -84,15 +84,16 @@ g_mount_get_type (void) | ||||
| 	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 | ||||
|   | ||||
| @@ -44,11 +44,11 @@ static void g_seekable_base_init (gpointer g_class); | ||||
| 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 */ | ||||
| @@ -60,15 +60,16 @@ g_seekable_get_type (void) | ||||
| 	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 | ||||
|   | ||||
| @@ -78,11 +78,11 @@ static void g_volume_class_init (gpointer g_class, | ||||
| 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 */ | ||||
| @@ -94,15 +94,16 @@ g_volume_get_type (void) | ||||
| 	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 | ||||
|   | ||||
		Reference in New Issue
	
	Block a user