diff options
author | Daniel Friesel <derf@finalrewind.org> | 2011-03-12 23:38:24 +0100 |
---|---|---|
committer | Daniel Friesel <derf@finalrewind.org> | 2011-03-12 23:38:24 +0100 |
commit | fc9b1deb56fb26e79788ba97193097923a883a84 (patch) | |
tree | cd2e446f877f566fc5ac935e94e6b792b6dec33a | |
parent | 2abc27e5243cf8d80e0942d14656ccb12cd805de (diff) |
Fix segfault upon unloadable image with --title %h/%w/... (closes GH-35)
-rw-r--r-- | ChangeLog | 5 | ||||
-rw-r--r-- | src/slideshow.c | 9 | ||||
-rwxr-xr-x | test/feh.i | 8 |
3 files changed, 17 insertions, 5 deletions
@@ -1,3 +1,8 @@ +git HEAD + + * Fix segfault upon unloadable images when image-related format specifiers + (e.g. %h) are used in --title + Sat, 12 Mar 2011 22:49:53 +0100 Daniel Friesel <derf@finalrewind.org> * Release v1.12 diff --git a/src/slideshow.c b/src/slideshow.c index 5ceee39..a75affd 100644 --- a/src/slideshow.c +++ b/src/slideshow.c @@ -252,10 +252,6 @@ void slideshow_change_image(winwidget winwid, int change) filelist = feh_file_remove_from_list(filelist, last); last = NULL; } - s = slideshow_create_name(FEH_FILE(current_file->data)); - - winwidget_rename(winwid, s); - free(s); if ((winwidget_loadimage(winwid, FEH_FILE(current_file->data))) != 0) { @@ -269,6 +265,11 @@ void slideshow_change_image(winwidget winwid, int change) winwid->im_w = gib_imlib_image_get_width(winwid->im); winwid->im_h = gib_imlib_image_get_height(winwid->im); winwidget_render_image(winwid, 1, 1); + + s = slideshow_create_name(FEH_FILE(current_file->data)); + winwidget_rename(winwid, s); + free(s); + break; } else last = current_file; @@ -4,7 +4,7 @@ use warnings; use 5.010; use Cwd; -use Test::More tests => 102; +use Test::More tests => 103; use Time::HiRes qw/sleep/; use X11::GUITest qw/:ALL/; @@ -445,3 +445,9 @@ ok(waitfor { }, 'disabled screen clip'); feh_stop(); + +# GH-35 "Custom window title crashes feh on unloadable files" +$win = feh_start('--title "feh %h"', 'test/ok/png test/fail/png test/ok/jpg'); +SendKeys('{RIG}'); +test_win_title($win, 'feh 16'); +feh_stop(); |