printing: Be more careful when deserializing
authorMatthias Clasen <mclasen@redhat.com>
Fri, 20 Apr 2018 20:56:28 +0000 (16:56 -0400)
committerMatthias Clasen <mclasen@redhat.com>
Fri, 20 Apr 2018 20:58:36 +0000 (16:58 -0400)
The GVariant we are getting here might not be coming
from GTK+, but rather from some other source. Best to
be forgiving and deal with missing data without crashing.

This was causing the GTK+ portal backends to crash on
print requests from Qt.

gtk/gtkpagesetup.c

index f1856c7dd27850f3963b210e325b1f0d2aa79a0f..0769b8aeacc933e285d813c6e62dbf951dc6db42 100644 (file)
@@ -848,8 +848,11 @@ gtk_page_setup_new_from_gvariant (GVariant *variant)
   setup = gtk_page_setup_new ();
 
   paper_size = gtk_paper_size_new_from_gvariant (variant);
-  gtk_page_setup_set_paper_size (setup, paper_size);
-  gtk_paper_size_free (paper_size);
+  if (paper_size)
+    {
+      gtk_page_setup_set_paper_size (setup, paper_size);
+      gtk_paper_size_free (paper_size);
+    }
 
   if (g_variant_lookup (variant, "MarginTop", "d", &margin))
     gtk_page_setup_set_top_margin (setup, margin, GTK_UNIT_MM);