import evince-3.28.4-1.el8

This commit is contained in:
CentOS Sources 2019-05-07 03:23:33 -04:00 committed by Andrew Lukoshko
commit a15853f171
7 changed files with 2053 additions and 0 deletions

1
.evince.metadata Normal file
View File

@ -0,0 +1 @@
230997237a449bc71b2c6769f5d30a2d616fba03 SOURCES/evince-3.28.4.tar.xz

1
.gitignore vendored Normal file
View File

@ -0,0 +1 @@
SOURCES/evince-3.28.4.tar.xz

View File

@ -0,0 +1,86 @@
From 8e20f99f5d73175112b37203ba127519db90aff0 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Caol=C3=A1n=20McNamara?= <caolanm@redhat.com>
Date: Tue, 10 Jan 2017 15:10:44 +0000
Subject: [PATCH] Resolves: deb#762530 rhbz#1061177 add man pages
for evince-previewer and evince-thumbnailer
---
data/Makefile.am | 2 +-
data/evince-previewer.1 | 24 ++++++++++++++++++++++++
data/evince-thumbnailer.1 | 20 ++++++++++++++++++++
3 files changed, 45 insertions(+), 1 deletion(-)
create mode 100644 data/evince-previewer.1
create mode 100644 data/evince-thumbnailer.1
diff --git a/data/Makefile.am b/data/Makefile.am
index 44fcf33..a45a3cb 100644
--- a/data/Makefile.am
+++ b/data/Makefile.am
@@ -7,7 +7,7 @@ install-data-local: update-icon-cache
# man file
#
-man_MANS=evince.1
+man_MANS=evince.1 evince-previewer.1 evince-thumbnailer.1
#
# UI descriptions
diff --git a/data/evince-previewer.1 b/data/evince-previewer.1
new file mode 100644
index 0000000..1841509
--- /dev/null
+++ b/data/evince-previewer.1
@@ -0,0 +1,24 @@
+.TH evince\-previewer 1 2015\-07\-28
+.SH NAME
+evince\-previewer \- show a printing preview of PostScript and PDF documents
+.SH SYNOPSIS
+\fBevince\-previewer\fR [options] \fBinput\fR
+.SH DESCRIPTION
+evince\-previewer is a GNOME program to
+show a printing preview from PostScript (PS), Portable Document Format
+(PDF), DjVu and DVI files.
+.SH OPTIONS
+evince\-previewer obeys all normal GNOME and GTK+ command line options.
+The application options are
+.TP
+\fB\-u, \-\-unlink\-tempfile\fR
+Delete the temporary file
+.TP
+\fB\-p, \-\-print-settings=FILE\fR
+Print settings file
+.SH "SEE ALSO"
+\fBevince\fR(1),
+\fBgnome\-options\fR(7),
+\fBgtk\-options\fR(7).
+.PP
+https://wiki.gnome.org/Apps/Evince
diff --git a/data/evince-thumbnailer.1 b/data/evince-thumbnailer.1
new file mode 100644
index 0000000..25ddfec
--- /dev/null
+++ b/data/evince-thumbnailer.1
@@ -0,0 +1,20 @@
+.TH evince\-thumbnailer 1 2007\-01\-15
+.SH NAME
+evince\-thumbnailer \- create png thumbnails from PostScript and PDF documents
+.SH SYNOPSIS
+\fBevince\-thumbnailer\fR [\-s \fBsize\fR] \fBinput\fR \fBoutput\fR
+.SH DESCRIPTION
+evince\-thumbnailer is a GNOME program to
+create thumbnails from PostScript (PS), Portable Document Format
+(PDF), DjVu and DVI files.
+.SH OPTIONS
+evince obeys all normal GNOME and GTK+
+command line options. The only option \-s \fIsize
+\fRmakes it possible to choose the vertical size
+of the created thumbnail.
+.SH "SEE ALSO"
+\fBevince\fR(1),
+\fBgnome\-options\fR(7),
+\fBgtk\-options\fR(7).
+.PP
+http://www.gnome.org/projects/evince/
--
2.9.3

View File

@ -0,0 +1,55 @@
From 22b047c3db84a34fc5fb5076474640bcd3917c73 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Caol=C3=A1n=20McNamara?= <caolanm@redhat.com>
Date: Fri, 17 Feb 2017 09:28:18 +0000
Subject: [PATCH] Revert "Bump poppler requirements to 0.33.0"
This reverts commit 5a4912bdbbf3c8000e77a093cf366276eeb56283.
---
backend/pdf/ev-poppler.cc | 4 ++++
configure.ac | 7 ++++++-
2 files changed, 10 insertions(+), 1 deletion(-)
diff --git a/backend/pdf/ev-poppler.cc b/backend/pdf/ev-poppler.cc
index 214094f..f3a6510 100644
--- a/backend/pdf/ev-poppler.cc
+++ b/backend/pdf/ev-poppler.cc
@@ -3508,7 +3508,11 @@ pdf_document_annotations_save_annotation (EvDocumentAnnotations *document_annota
poppler_rect.y2 = height - ev_rect.y1;
if (poppler_annot_markup_has_popup (markup))
+#ifdef HAVE_POPPLER_ANNOT_MARKUP_SET_POPUP_RECTANGLE
poppler_annot_markup_set_popup_rectangle (markup, &poppler_rect);
+#else
+ poppler_annot_markup_set_popup (markup, &poppler_rect);
+#endif
else
poppler_annot_markup_set_popup (markup, &poppler_rect);
}
diff --git a/configure.ac b/configure.ac
index 23a390f..a01392a 100644
--- a/configure.ac
+++ b/configure.ac
@@ -536,7 +536,7 @@ AC_ARG_ENABLE([pdf],
[enable_pdf=yes])
if test "x$enable_pdf" = "xyes"; then
- POPPLER_REQUIRED=0.33.0
+ POPPLER_REQUIRED=0.24.0
PKG_CHECK_MODULES(POPPLER, poppler-glib >= $POPPLER_REQUIRED libxml-2.0 >= $LIBXML_REQUIRED,enable_pdf=yes,enable_pdf=no)
if test "x$enable_pdf" = "xyes"; then
@@ -549,6 +549,11 @@ if test "x$enable_pdf" = "xyes"; then
if test x$enable_cairo_ps = xyes; then
AC_DEFINE([HAVE_CAIRO_PS], [1], [defined if cairo-ps is available])
fi
+
+ evince_save_LIBS=$LIBS
+ LIBS="$LIBS $POPPLER_LIBS"
+ AC_CHECK_FUNCS(poppler_annot_markup_set_popup_rectangle)
+ LIBS=$evince_save_LIBS
else
AC_MSG_ERROR("PDF support is disabled since poppler-glib library version $POPPLER_REQUIRED or newer not found")
fi
--
2.9.3

View File

@ -0,0 +1,76 @@
--- evince-3.21.92/browser-plugin/EvBrowserPluginMain.cpp
+++ evince-3.21.92/browser-plugin/EvBrowserPluginMain.cpp
@@ -38,11 +38,40 @@ static EvBrowserPlugin *pluginForInstanc
return static_cast<EvBrowserPlugin *>(instance->pdata);
}
+static gboolean gtkToolkitIsCompatible(NPP instance)
+{
+ NPNToolkitType toolkit_type = NPNVGtk12;
+ NPError error;
+
+ error = browser->getvalue(instance, NPNVToolkit, &toolkit_type);
+
+ if (error == NPERR_NO_ERROR &&
+ (toolkit_type == NPNVGtk12 ||
+ toolkit_type == NPNVGtk2))
+ return FALSE;
+ else
+ return TRUE;
+}
+
NPError NPP_New(NPMIMEType pluginType, NPP instance, uint16_t mode, int16_t argc, char *argn[], char *argv[], NPSavedData *savedData)
{
if (!instance)
return NPERR_INVALID_INSTANCE_ERROR;
+ if (!gtkToolkitIsCompatible(instance))
+ return NPERR_GENERIC_ERROR;
+
+ GBytes *resourceData = g_resources_lookup_data("/org/gnome/evince/browser/ui/evince-browser.css", G_RESOURCE_LOOKUP_FLAGS_NONE, nullptr);
+ if (resourceData) {
+ GtkCssProvider *cssProvider = gtk_css_provider_new();
+
+ gtk_css_provider_load_from_data(cssProvider, static_cast<const gchar *>(g_bytes_get_data(resourceData, nullptr)), g_bytes_get_size(resourceData), nullptr);
+ g_bytes_unref(resourceData);
+
+ gtk_style_context_add_provider_for_screen(gdk_screen_get_default(), GTK_STYLE_PROVIDER(cssProvider), GTK_STYLE_PROVIDER_PRIORITY_APPLICATION);
+ g_object_unref(cssProvider);
+ }
+
return EvBrowserPlugin::create(instance)->initialize(pluginType, mode, argc, argn, argv, savedData);
}
@@ -197,6 +226,11 @@ NPError NP_Initialize(NPNetscapeFuncs *b
if ((browserFuncs->version >> 8) > NP_VERSION_MAJOR)
return NPERR_INCOMPATIBLE_VERSION_ERROR;
+ browser = browserFuncs;
+
+ if (!gtkToolkitIsCompatible(NULL))
+ return NPERR_GENERIC_ERROR;
+
if (!ev_init())
return NPERR_GENERIC_ERROR;
@@ -207,20 +241,8 @@ NPError NP_Initialize(NPNetscapeFuncs *b
return NPERR_GENERIC_ERROR;
#endif
- browser = browserFuncs;
initializePluginFuncs(pluginFuncs);
- GBytes *resourceData = g_resources_lookup_data("/org/gnome/evince/browser/ui/evince-browser.css", G_RESOURCE_LOOKUP_FLAGS_NONE, nullptr);
- if (resourceData) {
- GtkCssProvider *cssProvider = gtk_css_provider_new();
-
- gtk_css_provider_load_from_data(cssProvider, static_cast<const gchar *>(g_bytes_get_data(resourceData, nullptr)), g_bytes_get_size(resourceData), nullptr);
- g_bytes_unref(resourceData);
-
- gtk_style_context_add_provider_for_screen(gdk_screen_get_default(), GTK_STYLE_PROVIDER(cssProvider), GTK_STYLE_PROVIDER_PRIORITY_APPLICATION);
- g_object_unref(cssProvider);
- }
-
return NPERR_NO_ERROR;
}

View File

@ -0,0 +1,465 @@
--- evince-3.28.2/backend/comics/comics-document.c
+++ evince-3.28.2/backend/comics/comics-document.c
@@ -453,23 +453,27 @@ comics_document_render_pixbuf (EvDocumen
name = ev_archive_get_entry_pathname (comics_document->archive);
if (g_strcmp0 (name, page_path) == 0) {
- size_t size = ev_archive_get_entry_size (comics_document->archive);
+ gint64 size = ev_archive_get_entry_size (comics_document->archive);
char *buf;
ssize_t read;
- buf = g_malloc (size);
- read = ev_archive_read_data (comics_document->archive, buf, size, &error);
- if (read <= 0) {
- if (read < 0) {
- g_warning ("Fatal error reading '%s' in archive: %s", name, error->message);
- g_error_free (error);
+ if (size < 0) {
+ g_warning ("Wrong size of entry '%s'.", name);
+ } else {
+ buf = g_malloc (size);
+ read = ev_archive_read_data (comics_document->archive, buf, size, &error);
+ if (read <= 0) {
+ if (read < 0) {
+ g_warning ("Fatal error reading '%s' in archive: %s", name, error->message);
+ g_error_free (error);
+ } else {
+ g_warning ("Read an empty file from the archive");
+ }
} else {
- g_warning ("Read an empty file from the archive");
+ gdk_pixbuf_loader_write (loader, (guchar *) buf, size, NULL);
}
- } else {
- gdk_pixbuf_loader_write (loader, (guchar *) buf, size, NULL);
+ g_free (buf);
}
- g_free (buf);
gdk_pixbuf_loader_close (loader, NULL);
break;
}
--- evince-3.28.2/backend/pdf/ev-poppler.cc
+++ evince-3.28.2/backend/pdf/ev-poppler.cc
@@ -859,6 +859,7 @@ pdf_document_get_info (EvDocument *docum
break;
case POPPLER_PAGE_LAYOUT_TWO_COLUMN_RIGHT:
info->layout = EV_DOCUMENT_LAYOUT_TWO_COLUMN_RIGHT;
+ break;
case POPPLER_PAGE_LAYOUT_TWO_PAGE_LEFT:
info->layout = EV_DOCUMENT_LAYOUT_TWO_PAGE_LEFT;
break;
--- evince-3.28.2/cut-n-paste/libgd/gd-two-lines-renderer.c
+++ evince-3.28.2/cut-n-paste/libgd/gd-two-lines-renderer.c
@@ -281,7 +281,7 @@ gd_two_lines_renderer_render (GtkCellRen
GtkStyleContext *context;
gint line_one_height;
GtkStateFlags state;
- GdkRectangle area, render_area = *cell_area;
+ GdkRectangle area, render_area;
gint xpad, ypad, x_offset_1, x_offset_2, y_offset;
PangoLayout *layout_one, *layout_two;
PangoRectangle layout_rect;
--- evince-3.28.2/cut-n-paste/synctex/synctex_parser.c
+++ evince-3.28.2/cut-n-paste/synctex/synctex_parser.c
@@ -2878,6 +2878,7 @@ int _synctex_open(const char * output, c
build_output[0] = '\0';
} else {
if (build_output != strcpy(build_output,output)) {
+ free(build_output);
return -4;
}
build_output[lpc-output]='\0';
@@ -2886,15 +2887,18 @@ int _synctex_open(const char * output, c
/* Append a path separator if necessary. */
if (!SYNCTEX_IS_PATH_SEPARATOR(build_output[strlen(build_directory)-1])) {
if (build_output != strcat(build_output,"/")) {
+ free(build_output);
return -2;
}
}
/* Append the last path component of the output. */
if (build_output != strcat(build_output,lpc)) {
+ free(build_output);
return -3;
}
return __synctex_open(build_output,synctex_name_ref,file_ref,add_quotes,io_mode_ref);
}
+ free(build_output);
}
return -1;
}
--- evince-3.28.2/cut-n-paste/synctex/synctex_parser_utils.c
+++ evince-3.28.2/cut-n-paste/synctex/synctex_parser_utils.c
@@ -292,6 +292,7 @@ char * _synctex_merge_strings(const char
size_t len = strlen(temp);
if(UINT_MAX-len<size) {
_synctex_error("! _synctex_merge_strings: Capacity exceeded.");
+ va_end(arg);
return NULL;
}
size+=len;
@@ -312,6 +313,7 @@ char * _synctex_merge_strings(const char
_synctex_error("! _synctex_merge_strings: Copy problem");
free(result);
result = NULL;
+ va_end(arg);
return NULL;
}
dest += size;
@@ -393,7 +395,7 @@ int _synctex_get_name(const char * outpu
free(dir_name);
dir_name = NULL;
free(core_name);
- dir_name = NULL;
+ core_name = NULL;
return -2;
}
dir_name[size] = '\0';
@@ -487,6 +489,12 @@ int _synctex_get_name(const char * outpu
/* set up the returned values */
* synctex_name_ref = synctex_name;
* io_mode_ref = io_mode;
+ free(dir_name);
+ dir_name = NULL;
+ free(core_name);
+ core_name = NULL;
+ free(quoted_core_name);
+ quoted_core_name = NULL;
return 0;
}
return -1;/* bad argument */
--- evince-3.28.2/cut-n-paste/unarr/rar/filter-rar.c
+++ evince-3.28.2/cut-n-paste/unarr/rar/filter-rar.c
@@ -273,8 +273,10 @@ static struct RARFilter *rar_create_filt
filter->prog = prog;
filter->globaldatalen = globaldatalen > RARProgramSystemGlobalSize ? globaldatalen : RARProgramSystemGlobalSize;
filter->globaldata = calloc(1, filter->globaldatalen);
- if (!filter->globaldata)
+ if (!filter->globaldata) {
+ free (filter);
return NULL;
+ }
if (globaldata)
memcpy(filter->globaldata, globaldata, globaldatalen);
if (registers)
--- evince-3.28.2/libdocument/ev-document.c
+++ evince-3.28.2/libdocument/ev-document.c
@@ -496,6 +496,9 @@ ev_document_load_stream (EvDocument
g_return_val_if_fail (error == NULL || *error == NULL, FALSE);
klass = EV_DOCUMENT_GET_CLASS (document);
+
+ g_return_val_if_fail (klass != NULL, FALSE);
+
if (!klass->load_stream) {
g_set_error_literal (error, G_IO_ERROR, G_IO_ERROR_NOT_SUPPORTED,
"Backend does not support loading from stream");
@@ -544,6 +547,9 @@ ev_document_load_gfile (EvDocument
g_return_val_if_fail (error == NULL || *error == NULL, FALSE);
klass = EV_DOCUMENT_GET_CLASS (document);
+
+ g_return_val_if_fail (klass != NULL, FALSE);
+
if (!klass->load_gfile) {
g_set_error_literal (error, G_IO_ERROR, G_IO_ERROR_NOT_SUPPORTED,
"Backend does not support loading from GFile");
@@ -867,6 +873,9 @@ ev_document_get_backend_info (EvDocument
g_return_val_if_fail (EV_IS_DOCUMENT (document), FALSE);
klass = EV_DOCUMENT_GET_CLASS (document);
+
+ g_return_val_if_fail (klass != NULL, FALSE);
+
if (klass->get_backend_info == NULL)
return FALSE;
--- evince-3.28.2/libview/ev-pixbuf-cache.c
+++ evince-3.28.2/libview/ev-pixbuf-cache.c
@@ -337,6 +337,11 @@ job_finished_cb (EvJob *job,
job_info = find_job_cache (pixbuf_cache, job_render->page);
+ if (job_info == NULL) {
+ g_warning ("Job info not found.");
+ return;
+ }
+
if (ev_job_is_failed (job)) {
job_info->job = NULL;
g_object_unref (job);
@@ -721,6 +726,11 @@ add_job_if_needed (EvPixbufCache *pixbuf
gint device_scale = get_device_scale (pixbuf_cache);
gint width, height;
+ if (job_info == NULL) {
+ g_warning ("Adding job with NULL info.");
+ return;
+ }
+
if (job_info->job)
return;
--- evince-3.28.2/libview/ev-print-operation.c
+++ evince-3.28.2/libview/ev-print-operation.c
@@ -181,6 +181,7 @@ ev_print_operation_set_current_page (EvP
EvPrintOperationClass *class = EV_PRINT_OPERATION_GET_CLASS (op);
g_return_if_fail (EV_IS_PRINT_OPERATION (op));
+ g_return_if_fail (class != NULL);
g_return_if_fail (current_page >= 0);
class->set_current_page (op, current_page);
@@ -193,6 +194,7 @@ ev_print_operation_set_print_settings (E
EvPrintOperationClass *class = EV_PRINT_OPERATION_GET_CLASS (op);
g_return_if_fail (EV_IS_PRINT_OPERATION (op));
+ g_return_if_fail (class != NULL);
g_return_if_fail (GTK_IS_PRINT_SETTINGS (print_settings));
class->set_print_settings (op, print_settings);
@@ -210,6 +212,7 @@ ev_print_operation_get_print_settings (E
EvPrintOperationClass *class = EV_PRINT_OPERATION_GET_CLASS (op);
g_return_val_if_fail (EV_IS_PRINT_OPERATION (op), NULL);
+ g_return_val_if_fail (class != NULL, NULL);
return class->get_print_settings (op);
}
@@ -221,6 +224,7 @@ ev_print_operation_set_default_page_setu
EvPrintOperationClass *class = EV_PRINT_OPERATION_GET_CLASS (op);
g_return_if_fail (EV_IS_PRINT_OPERATION (op));
+ g_return_if_fail (class != NULL);
g_return_if_fail (GTK_IS_PAGE_SETUP (page_setup));
class->set_default_page_setup (op, page_setup);
@@ -238,6 +242,7 @@ ev_print_operation_get_default_page_setu
EvPrintOperationClass *class = EV_PRINT_OPERATION_GET_CLASS (op);
g_return_val_if_fail (EV_IS_PRINT_OPERATION (op), NULL);
+ g_return_val_if_fail (class != NULL, NULL);
return class->get_default_page_setup (op);
}
@@ -249,6 +254,7 @@ ev_print_operation_set_job_name (EvPrint
EvPrintOperationClass *class = EV_PRINT_OPERATION_GET_CLASS (op);
g_return_if_fail (EV_IS_PRINT_OPERATION (op));
+ g_return_if_fail (class != NULL);
g_return_if_fail (job_name != NULL);
class->set_job_name (op, job_name);
@@ -260,6 +266,7 @@ ev_print_operation_get_job_name (EvPrint
EvPrintOperationClass *class = EV_PRINT_OPERATION_GET_CLASS (op);
g_return_val_if_fail (EV_IS_PRINT_OPERATION (op), NULL);
+ g_return_val_if_fail (class != NULL, NULL);
return class->get_job_name (op);
}
@@ -271,6 +278,7 @@ ev_print_operation_run (EvPrintOperation
EvPrintOperationClass *class = EV_PRINT_OPERATION_GET_CLASS (op);
g_return_if_fail (EV_IS_PRINT_OPERATION (op));
+ g_return_if_fail (class != NULL);
class->run (op, parent);
}
@@ -281,6 +289,7 @@ ev_print_operation_cancel (EvPrintOperat
EvPrintOperationClass *class = EV_PRINT_OPERATION_GET_CLASS (op);
g_return_if_fail (EV_IS_PRINT_OPERATION (op));
+ g_return_if_fail (class != NULL);
class->cancel (op);
}
@@ -292,6 +301,7 @@ ev_print_operation_get_error (EvPrintOpe
EvPrintOperationClass *class = EV_PRINT_OPERATION_GET_CLASS (op);
g_return_if_fail (EV_IS_PRINT_OPERATION (op));
+ g_return_if_fail (class != NULL);
class->get_error (op, error);
}
@@ -303,6 +313,7 @@ ev_print_operation_set_embed_page_setup
EvPrintOperationClass *class = EV_PRINT_OPERATION_GET_CLASS (op);
g_return_if_fail (EV_IS_PRINT_OPERATION (op));
+ g_return_if_fail (class != NULL);
class->set_embed_page_setup (op, embed);
}
@@ -313,6 +324,7 @@ ev_print_operation_get_embed_page_setup
EvPrintOperationClass *class = EV_PRINT_OPERATION_GET_CLASS (op);
g_return_val_if_fail (EV_IS_PRINT_OPERATION (op), FALSE);
+ g_return_val_if_fail (class != NULL, FALSE);
return class->get_embed_page_setup (op);
}
--- evince-3.28.2/libview/ev-timeline.c
+++ evince-3.28.2/libview/ev-timeline.c
@@ -289,9 +289,15 @@ ev_timeline_new (guint duration)
void
ev_timeline_start (EvTimeline *timeline)
{
+ EvTimelineClass *klass;
+
g_return_if_fail (EV_IS_TIMELINE (timeline));
- EV_TIMELINE_GET_CLASS (timeline)->start (timeline);
+ klass = EV_TIMELINE_GET_CLASS (timeline);
+
+ g_return_if_fail (klass != NULL);
+
+ klass->start (timeline);
}
void
--- evince-3.28.2/libview/ev-view.c
+++ evince-3.28.2/libview/ev-view.c
@@ -1147,7 +1147,7 @@ ensure_rectangle_is_visible (EvView *vie
if (rect->x < adj_value) {
value = MAX (gtk_adjustment_get_lower (adjustment), rect->x - MARGIN);
gtk_adjustment_set_value (view->hadjustment, value);
- } else if (rect->x + rect->height > adj_value + allocation.width) {
+ } else if (rect->x + rect->width > adj_value + allocation.width) {
value = MIN (gtk_adjustment_get_upper (adjustment), rect->x + rect->width -
allocation.width + MARGIN);
gtk_adjustment_set_value (view->hadjustment, value);
@@ -1777,6 +1777,11 @@ goto_fitv_dest (EvView *view, EvLinkDest
page = ev_link_dest_get_page (dest);
+ if (page < 0) {
+ g_warning ("Link does not contain a page.");
+ return;
+ }
+
left = ev_link_dest_get_left (dest, &change_left);
doc_point.x = change_left ? left : 0;
doc_point.y = 0;
@@ -1813,6 +1818,11 @@ goto_fith_dest (EvView *view, EvLinkDest
page = ev_link_dest_get_page (dest);
+ if (page < 0) {
+ g_warning ("Link does not contain a page.");
+ return;
+ }
+
top = ev_link_dest_get_top (dest, &change_top);
doc_point.x = 0;
doc_point.y = change_top ? top : 0;
@@ -1846,6 +1856,11 @@ goto_fit_dest (EvView *view, EvLinkDest
page = ev_link_dest_get_page (dest);
+ if (page < 0) {
+ g_warning ("Link does not contain a page.");
+ return;
+ }
+
if (view->allow_links_change_zoom) {
double zoom;
gdouble doc_width, doc_height;
--- evince-3.28.2/libview/ev-view-presentation.c
+++ evince-3.28.2/libview/ev-view-presentation.c
@@ -448,7 +448,7 @@ ev_view_presentation_update_current_page
{
gint jump;
- if (page < 0 || page >= ev_document_get_n_pages (pview->document))
+ if (page >= ev_document_get_n_pages (pview->document))
return;
ev_view_presentation_animation_cancel (pview);
--- evince-3.28.2/shell/ev-sidebar.c
+++ evince-3.28.2/shell/ev-sidebar.c
@@ -471,18 +471,19 @@ ev_sidebar_add_page (EvSidebar *ev_sid
/* Set the first item added as active */
- gtk_tree_model_get_iter_first (ev_sidebar->priv->page_model, &iter);
- gtk_tree_model_get (ev_sidebar->priv->page_model,
- &iter,
- PAGE_COLUMN_TITLE, &label_title,
- PAGE_COLUMN_NOTEBOOK_INDEX, &index,
- -1);
+ if (gtk_tree_model_get_iter_first (ev_sidebar->priv->page_model, &iter)) {
+ gtk_tree_model_get (ev_sidebar->priv->page_model,
+ &iter,
+ PAGE_COLUMN_TITLE, &label_title,
+ PAGE_COLUMN_NOTEBOOK_INDEX, &index,
+ -1);
- gtk_menu_set_active (GTK_MENU (ev_sidebar->priv->menu), index);
- gtk_label_set_text (GTK_LABEL (ev_sidebar->priv->label), label_title);
- gtk_notebook_set_current_page (GTK_NOTEBOOK (ev_sidebar->priv->notebook),
- index);
- g_free (label_title);
+ gtk_menu_set_active (GTK_MENU (ev_sidebar->priv->menu), index);
+ gtk_label_set_text (GTK_LABEL (ev_sidebar->priv->label), label_title);
+ gtk_notebook_set_current_page (GTK_NOTEBOOK (ev_sidebar->priv->notebook),
+ index);
+ g_free (label_title);
+ }
}
static gboolean
--- evince-3.28.2/shell/ev-sidebar-thumbnails.c
+++ evince-3.28.2/shell/ev-sidebar-thumbnails.c
@@ -658,11 +658,11 @@ ev_sidebar_thumbnails_fill_model (EvSide
int i;
gint prev_width = -1;
gint prev_height = -1;
+ cairo_surface_t *loading_icon = NULL;
for (i = 0; i < sidebar_thumbnails->priv->n_pages; i++) {
gchar *page_label;
gchar *page_string;
- cairo_surface_t *loading_icon = NULL;
gint width, height;
page_label = ev_document_get_page_label (priv->document, i);
--- evince-3.28.2/shell/ev-window.c
+++ evince-3.28.2/shell/ev-window.c
@@ -3121,10 +3121,10 @@ ev_window_load_print_settings_from_metad
for (i = 0; i < G_N_ELEMENTS (document_print_settings); i++) {
gchar *value = NULL;
- ev_metadata_get_string (window->priv->metadata,
- document_print_settings[i], &value);
- gtk_print_settings_set (print_settings,
- document_print_settings[i], value);
+ if (ev_metadata_get_string (window->priv->metadata,
+ document_print_settings[i], &value))
+ gtk_print_settings_set (print_settings,
+ document_print_settings[i], value);
}
}
@@ -4705,12 +4705,16 @@ ev_window_cmd_bookmarks_add (GSimpleActi
gchar *page_label;
bm.page = ev_document_model_get_page (window->priv->model);
- page_label = ev_document_get_page_label (window->priv->document, bm.page);
- bm.title = g_strdup_printf (_("Page %s"), page_label);
- g_free (page_label);
+ if (bm.page >= 0) {
+ page_label = ev_document_get_page_label (window->priv->document, bm.page);
+ bm.title = g_strdup_printf (_("Page %s"), page_label);
+ g_free (page_label);
- /* EvBookmarks takes ownership of bookmark */
- ev_bookmarks_add (window->priv->bookmarks, &bm);
+ /* EvBookmarks takes ownership of bookmark */
+ ev_bookmarks_add (window->priv->bookmarks, &bm);
+ } else {
+ g_warning ("Bookmarking of a page failed.");
+ }
}
static void

1369
SPECS/evince.spec Normal file

File diff suppressed because it is too large Load Diff