]> www.fi.muni.cz Git - evince.git/blobdiff - libview/ev-pixbuf-cache.c
libview: Make sure we have a valid page range before getting/setting selection list
[evince.git] / libview / ev-pixbuf-cache.c
index 74b8674f293685a68f006d165b6c29add76254f5..ee68354575168a54437cece64cab3de726573f20 100644 (file)
@@ -777,11 +777,11 @@ ev_pixbuf_cache_set_inverted_colors (EvPixbufCache *pixbuf_cache,
                CacheJobInfo *job_info;
 
                job_info = pixbuf_cache->prev_job + i;
-               if (job_info->surface)
+               if (job_info && job_info->surface)
                        ev_document_misc_invert_surface (job_info->surface);
 
                job_info = pixbuf_cache->next_job + i;
-               if (job_info->surface)
+               if (job_info && job_info->surface)
                        ev_document_misc_invert_surface (job_info->surface);
        }
 
@@ -789,7 +789,7 @@ ev_pixbuf_cache_set_inverted_colors (EvPixbufCache *pixbuf_cache,
                CacheJobInfo *job_info;
 
                job_info = pixbuf_cache->job_list + i;
-               if (job_info->surface)
+               if (job_info && job_info->surface)
                        ev_document_misc_invert_surface (job_info->surface);
        }
 }
@@ -1035,6 +1035,9 @@ ev_pixbuf_cache_set_selection_list (EvPixbufCache *pixbuf_cache,
        if (!EV_IS_SELECTION (pixbuf_cache->document))
                return;
 
+        if (pixbuf_cache->start_page == -1 || pixbuf_cache->end_page == -1)
+                return;
+
        /* We check each area to see what needs updating, and what needs freeing; */
        page = pixbuf_cache->start_page - pixbuf_cache->preload_cache_size;
        for (i = 0; i < pixbuf_cache->preload_cache_size; i++) {
@@ -1114,6 +1117,9 @@ ev_pixbuf_cache_get_selection_list (EvPixbufCache *pixbuf_cache)
 
        g_return_val_if_fail (EV_IS_PIXBUF_CACHE (pixbuf_cache), NULL);
 
+        if (pixbuf_cache->start_page == -1 || pixbuf_cache->end_page == -1)
+                return NULL;
+
        /* We check each area to see what needs updating, and what needs freeing; */
        page = pixbuf_cache->start_page - pixbuf_cache->preload_cache_size;
        for (i = 0; i < pixbuf_cache->preload_cache_size; i++) {