Web   ·   Wiki   ·   Activities   ·   Blog   ·   Lists   ·   Chat   ·   Meeting   ·   Bugs   ·   Git   ·   Translate   ·   Archive   ·   People   ·   Donate
summaryrefslogtreecommitdiffstats
path: root/backend/pdf
diff options
context:
space:
mode:
authorCarlos Garcia Campos <carlosgc@gnome.org>2008-06-16 17:52:59 (GMT)
committer Carlos Garcia Campos <carlosgc@src.gnome.org>2008-06-16 17:52:59 (GMT)
commit31a1e800e5d6b24d8833ba28746b7ff6f2fbe6a9 (patch)
tree3ac4adda52e613740fb1b2c31b56d5d60d8f86f6 /backend/pdf
parent17f37a4bdb3e37586121edebd9e48cb24340b677 (diff)
Do not crash opening documents with no pages and show a warning message in
2008-06-16 Carlos Garcia Campos <carlosgc@gnome.org> * 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
Diffstat (limited to 'backend/pdf')
-rw-r--r--backend/pdf/ev-poppler.cc23
1 files changed, 13 insertions, 10 deletions
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"));