Mercurial > hg > forks > geeqie
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)