diff src/image.c @ 1247:09da3f14490d

fixed possible crash
author nadvornik
date Fri, 23 Jan 2009 22:53:02 +0000
parents 6ae6d77a1f15
children ecfe3732f00a
line wrap: on
line diff
--- a/src/image.c	Wed Jan 21 18:30:54 2009 +0000
+++ b/src/image.c	Fri Jan 23 22:53:02 2009 +0000
@@ -1003,6 +1003,10 @@
 	gint read_exif_for_color_profile = (imd->color_profile_enable && imd->color_profile_use_image);
 	gint read_exif_for_orientation = FALSE;
 
+	/* read_exif and similar functions can actually notice that the file has changed and triger a notification
+	that removes the pixbuf	from cache and unref it. Therefore we must ref it here before it is taken over by the renderer. */
+	g_object_ref(pixbuf); 
+	
 	if (imd->image_fd && imd->image_fd->user_orientation)
 		imd->orientation = imd->image_fd->user_orientation;
 	else if (options->image.exif_rotate_enable)
@@ -1041,6 +1045,8 @@
 		pixbuf_renderer_set_orientation((PixbufRenderer *)imd->pr, imd->orientation);
 		}
 
+	g_object_unref(pixbuf);
+
 	if (imd->color_profile_enable)
 		{
 		if (!image_post_process_color(imd, 0, exif, FALSE))