Web   ·   Wiki   ·   Activities   ·   Blog   ·   Lists   ·   Chat   ·   Meeting   ·   Bugs   ·   Git   ·   Translate   ·   Archive   ·   People   ·   Donate
summaryrefslogtreecommitdiffstats
path: root/libview
diff options
context:
space:
mode:
authorNickolay 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)
commit3fe3051453cad77a2964c96b53caf4e5a432b2fe (patch)
tree9f7eb2f27446ab3db589fc4f11e00789722921bb /libview
parentab20ff2e5e9e3f41be38269fd1023fad8fdc57fe (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')
-rw-r--r--libview/ev-page-cache.c24
-rw-r--r--libview/ev-page-cache.h1
2 files changed, 23 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)
{
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