From a7abdcf8fc5a6aabb00830c4c299fe154edbc3fc Mon Sep 17 00:00:00 2001 From: Matthias Clasen Date: Tue, 1 Jul 2008 05:38:49 +0000 Subject: Handle failure to create temp file by returning NULL. * gtk/gtkprintoperation-unix.c (_gtk_print_operation_platform_backend_create_preview_surface): Handle failure to create temp file by returning NULL. * gtk/gtkprintoperation.c (gtk_print_operation_preview_handler): Return FALSE if surface creation fails. (print_pages): If the preiew signal is not handled, show an error dialog. svn path=/trunk/; revision=20715 --- gtk/gtkprintoperation-unix.c | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) (limited to 'gtk/gtkprintoperation-unix.c') diff --git a/gtk/gtkprintoperation-unix.c b/gtk/gtkprintoperation-unix.c index 329361238d..583ec929ce 100644 --- a/gtk/gtkprintoperation-unix.c +++ b/gtk/gtkprintoperation-unix.c @@ -667,6 +667,13 @@ _gtk_print_operation_platform_backend_create_preview_surface (GtkPrintOperation filename = g_build_filename (g_get_tmp_dir (), "previewXXXXXX.pdf", NULL); fd = g_mkstemp (filename); + + if (fd < 0) + { + g_free (filename); + return NULL; + } + *target = filename; paper_size = gtk_page_setup_get_paper_size (page_setup); @@ -674,7 +681,7 @@ _gtk_print_operation_platform_backend_create_preview_surface (GtkPrintOperation h = gtk_paper_size_get_height (paper_size, GTK_UNIT_POINTS); *dpi_x = *dpi_y = 72; - surface = cairo_pdf_surface_create_for_stream (write_preview, GINT_TO_POINTER(fd), w, h); + surface = cairo_pdf_surface_create_for_stream (write_preview, GINT_TO_POINTER (fd), w, h); cairo_surface_set_user_data (surface, &key, GINT_TO_POINTER (fd), close_preview); -- cgit v1.2.1