diff --git a/gtk/gtkpicture.c b/gtk/gtkpicture.c index 3dc7c9b91b..b6ecd2f696 100644 --- a/gtk/gtkpicture.c +++ b/gtk/gtkpicture.c @@ -604,6 +604,7 @@ load_scalable_with_loader (GFile *file, out2: g_bytes_unref (bytes); out1: + gdk_pixbuf_loader_close (loader, NULL); g_object_unref (loader); return result; @@ -637,7 +638,7 @@ gtk_picture_set_file (GtkPicture *self, paintable = load_scalable_with_loader (file, gtk_widget_get_scale_factor (GTK_WIDGET (self))); gtk_picture_set_paintable (self, paintable); - g_object_unref (paintable); + g_clear_object (&paintable); g_object_thaw_notify (G_OBJECT (self)); } diff --git a/testsuite/reftests/meson.build b/testsuite/reftests/meson.build index 3a1f9ac688..597939d6c0 100644 --- a/testsuite/reftests/meson.build +++ b/testsuite/reftests/meson.build @@ -328,6 +328,8 @@ testdata = [ 'paned-undersized.css', 'paned-undersized.ref.ui', 'paned-undersized.ui', + 'picture-load-invalid-file.ui', + 'picture-load-invalid-file.ref.ui', 'pseudoclass-on-box.css', 'pseudoclass-on-box.ref.ui', 'pseudoclass-on-box.ui', diff --git a/testsuite/reftests/picture-load-invalid-file.ref.ui b/testsuite/reftests/picture-load-invalid-file.ref.ui new file mode 100644 index 0000000000..3500931a6b --- /dev/null +++ b/testsuite/reftests/picture-load-invalid-file.ref.ui @@ -0,0 +1,11 @@ + + + + + popup + + + + + + diff --git a/testsuite/reftests/picture-load-invalid-file.ui b/testsuite/reftests/picture-load-invalid-file.ui new file mode 100644 index 0000000000..8ca26cfacf --- /dev/null +++ b/testsuite/reftests/picture-load-invalid-file.ui @@ -0,0 +1,12 @@ + + + + + popup + + + does://not.com/exist.png + + + +