From 31a1e800e5d6b24d8833ba28746b7ff6f2fbe6a9 Mon Sep 17 00:00:00 2001 From: Carlos Garcia Campos Date: Mon, 16 Jun 2008 17:52:59 +0000 Subject: Do not crash opening documents with no pages and show a warning message in 2008-06-16 Carlos Garcia Campos * backend/pdf/ev-poppler.cc: (pdf_document_get_info): * shell/ev-sidebar-thumbnails.c: (ev_sidebar_thumbnails_set_loading_icon), (ev_sidebar_thumbnails_refresh): * shell/ev-window.c: (ev_window_error_message), (ev_window_warning_message), (ev_window_refresh_window_thumbnail), (ev_window_set_document): Do not crash opening documents with no pages and show a warning message in the message area. Fixes bugs #537574 and #171588. svn path=/trunk/; revision=3052 --- (limited to 'backend') diff --git a/backend/pdf/ev-poppler.cc b/backend/pdf/ev-poppler.cc index 2b6d415..04f4c65 100644 --- a/backend/pdf/ev-poppler.cc +++ b/backend/pdf/ev-poppler.cc @@ -590,15 +590,20 @@ pdf_document_get_info (EvDocument *document) "linearized", &(info->linearized), NULL); - page = ev_document_get_page (document, 0); - ev_document_get_page_size (document, page, - &(info->paper_width), - &(info->paper_height)); - g_object_unref (page); + info->n_pages = ev_document_get_n_pages (document); - // Convert to mm. - info->paper_width = info->paper_width / 72.0f * 25.4f; - info->paper_height = info->paper_height / 72.0f * 25.4f; + if (info->n_pages > 0) { + page = ev_document_get_page (document, 0); + ev_document_get_page_size (document, page, + &(info->paper_width), + &(info->paper_height)); + g_object_unref (page); + + + // Convert to mm. + info->paper_width = info->paper_width / 72.0f * 25.4f; + info->paper_height = info->paper_height / 72.0f * 25.4f; + } switch (layout) { case POPPLER_PAGE_LAYOUT_SINGLE_PAGE: @@ -678,8 +683,6 @@ pdf_document_get_info (EvDocument *document) info->permissions |= EV_DOCUMENT_PERMISSIONS_OK_TO_ADD_NOTES; } - info->n_pages = ev_document_get_n_pages (document); - if (ev_document_security_has_document_security (EV_DOCUMENT_SECURITY (document))) { /* translators: this is the document security state */ info->security = g_strdup (_("Yes")); -- cgit v0.9.1