1*4882a593SmuzhiyunFrom 7d49b889d1b244d037aa5495865a30cdffdb5d94 Mon Sep 17 00:00:00 2001 2*4882a593SmuzhiyunFrom: Bastien Nocera <hadess@hadess.net> 3*4882a593SmuzhiyunDate: Fri, 18 Sep 2020 12:06:45 +0200 4*4882a593SmuzhiyunSubject: [PATCH 1/2] Fix infinite loop if thumbnailer is not available 5*4882a593Smuzhiyun 6*4882a593SmuzhiyunThe code in cheese_thumb_view_idle_append_item() in 7*4882a593Smuzhiyunsrc/thumbview/cheese-thumb-view.c didn't pop the list of items to 8*4882a593Smuzhiyunthumbnail if thumbnailing failed. 9*4882a593Smuzhiyun 10*4882a593Smuzhiyun #0 0x00007f4a60e55314 in open64 () at /lib64/libc.so.6 11*4882a593Smuzhiyun #1 0x00007f4a60de6386 in _IO_file_open () at /lib64/libc.so.6 12*4882a593Smuzhiyun #2 0x00007f4a60de655a in __GI__IO_file_fopen () at /lib64/libc.so.6 13*4882a593Smuzhiyun #3 0x00007f4a60dd9aad in __fopen_internal () at /lib64/libc.so.6 14*4882a593Smuzhiyun #4 0x00007f4a6157a43f in gdk_pixbuf_new_from_file () at /lib64/libgdk_pixbuf-2.0.so.0 15*4882a593Smuzhiyun #5 0x00007f4a61e84b3a in gnome_desktop_thumbnail_factory_lookup () at /lib64/libgnome-desktop-3.so.19 16*4882a593Smuzhiyun #6 0x000055cef476046f in cheese_thumb_view_idle_append_item () 17*4882a593Smuzhiyun #7 0x00007f4a6124f47b in g_idle_dispatch () at /lib64/libglib-2.0.so.0 18*4882a593Smuzhiyun #8 0x00007f4a612537af in g_main_context_dispatch () at /lib64/libglib-2.0.so.0 19*4882a593Smuzhiyun #9 0x00007f4a61253b38 in g_main_context_iterate.constprop () at /lib64/libglib-2.0.so.0 20*4882a593Smuzhiyun #10 0x00007f4a61253c03 in g_main_context_iteration () at /lib64/libglib-2.0.so.0 21*4882a593Smuzhiyun #11 0x00007f4a6146a7ca in g_application_run () at /lib64/libgio-2.0.so.0 22*4882a593Smuzhiyun #12 0x000055cef4758547 in _vala_main () 23*4882a593Smuzhiyun #13 0x00007f4a60d8a042 in __libc_start_main () at /lib64/libc.so.6 24*4882a593Smuzhiyun #14 0x000055cef47554be in _start () 25*4882a593Smuzhiyun 26*4882a593Smuzhiyun #0 0x00007f4a60ec562d in __strlen_avx2 () at /lib64/libc.so.6 27*4882a593Smuzhiyun #1 0x00007f4a61275de8 in g_str_has_suffix () at /lib64/libglib-2.0.so.0 28*4882a593Smuzhiyun #2 0x00007f4a618c0072 in icon_name_is_symbolic () at /lib64/libgtk-3.so.0 29*4882a593Smuzhiyun #3 0x00007f4a618c00b1 in theme_dir_get_icon_suffix () at /lib64/libgtk-3.so.0 30*4882a593Smuzhiyun #4 0x00007f4a618c32ed in theme_lookup_icon () at /lib64/libgtk-3.so.0 31*4882a593Smuzhiyun #5 0x00007f4a618c3adf in real_choose_icon () at /lib64/libgtk-3.so.0 32*4882a593Smuzhiyun #6 0x00007f4a618c4762 in gtk_icon_theme_lookup_icon_for_scale () at /lib64/libgtk-3.so.0 33*4882a593Smuzhiyun #7 0x00007f4a618c5105 in gtk_icon_theme_load_icon_for_scale () at /lib64/libgtk-3.so.0 34*4882a593Smuzhiyun #8 0x000055cef47605c9 in cheese_thumb_view_idle_append_item () 35*4882a593Smuzhiyun #9 0x00007f4a6124f47b in g_idle_dispatch () at /lib64/libglib-2.0.so.0 36*4882a593Smuzhiyun #10 0x00007f4a612537af in g_main_context_dispatch () at /lib64/libglib-2.0.so.0 37*4882a593Smuzhiyun #11 0x00007f4a61253b38 in g_main_context_iterate.constprop () at /lib64/libglib-2.0.so.0 38*4882a593Smuzhiyun #12 0x00007f4a61253c03 in g_main_context_iteration () at /lib64/libglib-2.0.so.0 39*4882a593Smuzhiyun #13 0x00007f4a6146a7d8 in g_application_run () at /lib64/libgio-2.0.so.0 40*4882a593Smuzhiyun #14 0x000055cef4758547 in _vala_main () 41*4882a593Smuzhiyun #15 0x00007f4a60d8a042 in __libc_start_main () at /lib64/libc.so.6 42*4882a593Smuzhiyun #16 0x000055cef47554be in _start () 43*4882a593Smuzhiyun 44*4882a593SmuzhiyunCloses: #81 45*4882a593Smuzhiyun--- 46*4882a593Smuzhiyun src/thumbview/cheese-thumb-view.c | 5 +++-- 47*4882a593Smuzhiyun 1 file changed, 3 insertions(+), 2 deletions(-) 48*4882a593Smuzhiyun 49*4882a593Smuzhiyundiff --git a/src/thumbview/cheese-thumb-view.c b/src/thumbview/cheese-thumb-view.c 50*4882a593Smuzhiyunindex 1d2d88f5..232fd4b6 100644 51*4882a593Smuzhiyun--- a/src/thumbview/cheese-thumb-view.c 52*4882a593Smuzhiyun+++ b/src/thumbview/cheese-thumb-view.c 53*4882a593Smuzhiyun@@ -92,7 +92,7 @@ GtkWidget * cheese_thumb_view_new (void); 54*4882a593Smuzhiyun static gboolean 55*4882a593Smuzhiyun cheese_thumb_view_idle_append_item (gpointer data) 56*4882a593Smuzhiyun { 57*4882a593Smuzhiyun- CheeseThumbViewIdleData *item = g_queue_peek_head (data); 58*4882a593Smuzhiyun+ CheeseThumbViewIdleData *item = g_queue_pop_head (data); 59*4882a593Smuzhiyun CheeseThumbView *thumb_view; 60*4882a593Smuzhiyun CheeseThumbViewPrivate *priv; 61*4882a593Smuzhiyun 62*4882a593Smuzhiyun@@ -119,6 +119,7 @@ cheese_thumb_view_idle_append_item (gpointer data) 63*4882a593Smuzhiyun if (!info) 64*4882a593Smuzhiyun { 65*4882a593Smuzhiyun g_warning ("Invalid filename\n"); 66*4882a593Smuzhiyun+ g_slice_free (CheeseThumbViewIdleData, item); 67*4882a593Smuzhiyun return TRUE; 68*4882a593Smuzhiyun } 69*4882a593Smuzhiyun g_file_info_get_modification_time (info, &mtime); 70*4882a593Smuzhiyun@@ -167,6 +168,7 @@ cheese_thumb_view_idle_append_item (gpointer data) 71*4882a593Smuzhiyun if (error) 72*4882a593Smuzhiyun { 73*4882a593Smuzhiyun g_warning ("%s", error->message); 74*4882a593Smuzhiyun+ g_slice_free (CheeseThumbViewIdleData, item); 75*4882a593Smuzhiyun return TRUE; 76*4882a593Smuzhiyun } 77*4882a593Smuzhiyun } 78*4882a593Smuzhiyun@@ -183,7 +185,6 @@ cheese_thumb_view_idle_append_item (gpointer data) 79*4882a593Smuzhiyun g_object_unref (pixbuf); 80*4882a593Smuzhiyun g_object_unref (file); 81*4882a593Smuzhiyun g_slice_free (CheeseThumbViewIdleData, item); 82*4882a593Smuzhiyun- g_queue_pop_head (data); 83*4882a593Smuzhiyun 84*4882a593Smuzhiyun return TRUE; 85*4882a593Smuzhiyun } 86*4882a593Smuzhiyun-- 87*4882a593Smuzhiyun2.34.1 88*4882a593Smuzhiyun 89