From 3fe3051453cad77a2964c96b53caf4e5a432b2fe Mon Sep 17 00:00:00 2001 From: Nickolay V. Shmyrev Date: Sun, 03 May 2009 11:35:39 +0000 Subject: [document] Fixes handling of broken documents Instead of aborting on assertion, we gracefully report that document is broken. Fixes GNOME bug #580886. --- (limited to 'libview') 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) { diff --git a/libview/ev-page-cache.h b/libview/ev-page-cache.h index 814ede7..03e43d7 100644 --- a/libview/ev-page-cache.h +++ b/libview/ev-page-cache.h @@ -83,6 +83,7 @@ gboolean ev_page_cache_set_page_label (EvPageCache *page_cache, EvPageCache *ev_page_cache_get (EvDocument *document); +gboolean ev_page_cache_check_dimensions (EvPageCache *page_cache); G_END_DECLS -- cgit v0.9.1