diff options
author | Nickolay V. Shmyrev <nshmyrev@yandex.ru> | 2009-05-03 11:35:39 (GMT) |
---|---|---|
committer | Nickolay V. Shmyrev <nshmyrev@yandex.ru> | 2009-05-03 11:35:39 (GMT) |
commit | 3fe3051453cad77a2964c96b53caf4e5a432b2fe (patch) | |
tree | 9f7eb2f27446ab3db589fc4f11e00789722921bb /libview/ev-page-cache.c | |
parent | ab20ff2e5e9e3f41be38269fd1023fad8fdc57fe (diff) |
[document] Fixes handling of broken documents
Instead of aborting on assertion, we gracefully report that document is broken.
Fixes GNOME bug #580886.
Diffstat (limited to 'libview/ev-page-cache.c')
-rw-r--r-- | libview/ev-page-cache.c | 24 |
1 files changed, 22 insertions, 2 deletions
diff --git a/libview/ev-page-cache.c b/libview/ev-page-cache.c index a8639ef..c3bb60c 100644 --- a/libview/ev-page-cache.c +++ b/libview/ev-page-cache.c @@ -416,8 +416,6 @@ ev_page_cache_new (EvDocument *document) /* make some sanity check assertions */ if (! page_cache->uniform) g_assert (page_cache->size_cache != NULL); - if (page_cache->uniform && page_cache->n_pages > 0) - g_assert (page_cache->uniform_width > 0 && page_cache->uniform_height > 0); ev_document_doc_mutex_unlock (); @@ -427,6 +425,28 @@ ev_page_cache_new (EvDocument *document) return page_cache; } +gboolean +ev_page_cache_check_dimensions (EvPageCache *page_cache) +{ + gint document_width, document_height; + + if (page_cache->uniform && page_cache->n_pages > 0) + if (page_cache->uniform_width <= 0 || page_cache->uniform_height <= 0) + return TRUE; + + ev_page_cache_get_max_width (page_cache, + 0, 1.0, + &document_width); + ev_page_cache_get_max_height (page_cache, + 0, 1.0, + &document_height); + + if (document_width <= 0 || document_height <= 0) + return TRUE; + + return FALSE; +} + gint ev_page_cache_get_n_pages (EvPageCache *page_cache) { |