[gtk+/gtk-2-24] printing: Fail nicely when /tmp is not writable



commit 378ea9029f0ae2897d769a9928adb1d636b6c151
Author: Marek Kasik <mkasik redhat com>
Date:   Fri Mar 14 16:01:56 2014 +0100

    printing: Fail nicely when /tmp is not writable
    
    Don't crash when /tmp is not writable when printing to file.
    Show that getting of printer details failed for CUPS printers.
    
    https://bugzilla.gnome.org/show_bug.cgi?id=693200

 gtk/gtkprintjob.c                                |    2 +-
 gtk/gtkprintoperation-unix.c                     |    5 +++--
 gtk/gtkprintunixdialog.c                         |    2 +-
 modules/printbackends/cups/gtkprintbackendcups.c |    2 +-
 4 files changed, 6 insertions(+), 5 deletions(-)
---
diff --git a/gtk/gtkprintjob.c b/gtk/gtkprintjob.c
index d280edf..31bd6f4 100644
--- a/gtk/gtkprintjob.c
+++ b/gtk/gtkprintjob.c
@@ -455,7 +455,7 @@ gtk_print_job_get_surface (GtkPrintJob  *job,
                           GError      **error)
 {
   GtkPrintJobPrivate *priv;
-  gchar *filename;
+  gchar *filename = NULL;
   gdouble width, height;
   GtkPaperSize *paper_size;
   int fd;
diff --git a/gtk/gtkprintoperation-unix.c b/gtk/gtkprintoperation-unix.c
index e4f1537..10b5853 100644
--- a/gtk/gtkprintoperation-unix.c
+++ b/gtk/gtkprintoperation-unix.c
@@ -132,8 +132,9 @@ op_unix_free (GtkPrintOperationUnix *op_unix)
 {
   if (op_unix->job)
     {
-      g_signal_handler_disconnect (op_unix->job,
-                                  op_unix->job_status_changed_tag);
+      if (op_unix->job_status_changed_tag > 0)
+        g_signal_handler_disconnect (op_unix->job,
+                                    op_unix->job_status_changed_tag);
       g_object_unref (op_unix->job);
     }
 
diff --git a/gtk/gtkprintunixdialog.c b/gtk/gtkprintunixdialog.c
index 2e98474..0c2efad 100644
--- a/gtk/gtkprintunixdialog.c
+++ b/gtk/gtkprintunixdialog.c
@@ -1855,12 +1855,12 @@ selected_printer_changed (GtkTreeSelection   *selection,
                           G_CALLBACK (printer_details_acquired), dialog);
       /* take the reference */
       priv->request_details_printer = printer;
-      gtk_printer_request_details (printer);
       set_busy_cursor (dialog, TRUE);
       gtk_list_store_set (GTK_LIST_STORE (priv->printer_list),
                           g_object_get_data (G_OBJECT (printer), "gtk-print-tree-iter"),
                           PRINTER_LIST_COL_STATE, _("Getting printer information..."),
                           -1);
+      gtk_printer_request_details (printer);
       return;
     }
 
diff --git a/modules/printbackends/cups/gtkprintbackendcups.c 
b/modules/printbackends/cups/gtkprintbackendcups.c
index 4137e97..4efeb72 100644
--- a/modules/printbackends/cups/gtkprintbackendcups.c
+++ b/modules/printbackends/cups/gtkprintbackendcups.c
@@ -3393,7 +3393,7 @@ cups_request_ppd (GtkPrinter *printer)
   GtkPrintBackend *print_backend;
   GtkPrinterCups *cups_printer;
   GtkCupsRequest *request;
-  char *ppd_filename;
+  char *ppd_filename = NULL;
   gchar *resource;
   http_t *http;
   GetPPDData *data;


[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]