changeset 2754:ce0e8d548c0a

Fix #609: Crash on "View in New Window" if no image active https://github.com/BestImageViewer/geeqie/issues/609
author Colin Clark <colin.clark@cclark.uk>
date Tue, 15 May 2018 09:37:55 +0100
parents 9ab20f827272
children db7fa530da47
files src/img-view.c
diffstat 1 files changed, 30 insertions(+), 27 deletions(-) [+]
line wrap: on
line diff
--- a/src/img-view.c	Sun May 06 19:54:36 2018 +0100
+++ b/src/img-view.c	Tue May 15 09:37:55 2018 +0100
@@ -940,41 +940,44 @@
 {
 	GList *list;
 
-	if (file_extension_match(fd->path, GQ_COLLECTION_EXT))
+	if (fd)
 		{
-		ViewWindow *vw;
-		CollectionData *cd;
-		CollectInfo *info;
+		if (file_extension_match(fd->path, GQ_COLLECTION_EXT))
+			{
+			ViewWindow *vw;
+			CollectionData *cd;
+			CollectInfo *info;
 
-		cd = collection_new(fd->path);
-		if (collection_load(cd, fd->path, COLLECTION_LOAD_NONE))
+			cd = collection_new(fd->path);
+			if (collection_load(cd, fd->path, COLLECTION_LOAD_NONE))
+				{
+				info = collection_get_first(cd);
+				}
+			else
+				{
+				collection_unref(cd);
+				cd = NULL;
+				info = NULL;
+				}
+			vw = real_view_window_new(NULL, NULL, cd, info);
+			if (vw && cd)
+				{
+				g_signal_connect(G_OBJECT(vw->window), "destroy",
+						 G_CALLBACK(view_window_collection_unref_cb), cd);
+				}
+			}
+		else if (isdir(fd->path) && filelist_read(fd, &list, NULL))
 			{
-			info = collection_get_first(cd);
+			list = filelist_sort_path(list);
+			list = filelist_filter(list, FALSE);
+			real_view_window_new(NULL, list, NULL, NULL);
+			filelist_free(list);
 			}
 		else
 			{
-			collection_unref(cd);
-			cd = NULL;
-			info = NULL;
-			}
-		vw = real_view_window_new(NULL, NULL, cd, info);
-		if (vw && cd)
-			{
-			g_signal_connect(G_OBJECT(vw->window), "destroy",
-					 G_CALLBACK(view_window_collection_unref_cb), cd);
+			real_view_window_new(fd, NULL, NULL, NULL);
 			}
 		}
-	else if (isdir(fd->path) && filelist_read(fd, &list, NULL))
-		{
-		list = filelist_sort_path(list);
-		list = filelist_filter(list, FALSE);
-		real_view_window_new(NULL, list, NULL, NULL);
-		filelist_free(list);
-		}
-	else
-		{
-		real_view_window_new(fd, NULL, NULL, NULL);
-		}
 }
 
 void view_window_new_from_list(GList *list)