diff options
author | Carlos 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) |
commit | 31a1e800e5d6b24d8833ba28746b7ff6f2fbe6a9 (patch) | |
tree | 3ac4adda52e613740fb1b2c31b56d5d60d8f86f6 /backend | |
parent | 17f37a4bdb3e37586121edebd9e48cb24340b677 (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')
-rw-r--r-- | backend/pdf/ev-poppler.cc | 23 |
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")); |