Web   ·   Wiki   ·   Activities   ·   Blog   ·   Lists   ·   Chat   ·   Meeting   ·   Bugs   ·   Git   ·   Translate   ·   Archive   ·   People   ·   Donate
summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorNickolay V. Shmyrev <nshmyrev@src.gnome.org>2005-06-18 21:43:31 (GMT)
committer Nickolay V. Shmyrev <nshmyrev@src.gnome.org>2005-06-18 21:43:31 (GMT)
commit71cfbd5e3ec158efcb49c896bd4468764a9a54fb (patch)
treea13871c85a8718ca37678f39646cba5eaa406fb6
parentf302b9a420aaf02e5805b3225ce4fef5a63e9b67 (diff)
Check for incorrect dvi files. Fix parsing dvi on AMD64 platform. Thanks
* dvi/dvi-document.c: (dvi_document_load): * dvi/mdvi-lib/dviread.c: (mdvi_init_context): * po/POTFILES.in: Check for incorrect dvi files. Fix parsing dvi on AMD64 platform. Thanks to tester@tester.ca (Olivier Crete).
-rw-r--r--ChangeLog9
-rw-r--r--dvi/dvi-document.c18
-rw-r--r--dvi/mdvi-lib/dviread.c2
-rw-r--r--po/POTFILES.in1
4 files changed, 27 insertions, 3 deletions
diff --git a/ChangeLog b/ChangeLog
index 57cb4cf..f77e17c 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,12 @@
+2005-06-19 Nickolay V. Shmyrev <nshmyrev@yandex.ru>
+
+ * dvi/dvi-document.c: (dvi_document_load):
+ * dvi/mdvi-lib/dviread.c: (mdvi_init_context):
+ * po/POTFILES.in:
+
+ Check for incorrect dvi files. Fix parsing dvi on AMD64
+ platform. Thanks to tester@tester.ca (Olivier Crete).
+
2005-06-18 Nickolay V. Shmyrev <nshmyrev@yandex.ru>
* shell/ev-page-action.c: (match_selected_cb),
diff --git a/dvi/dvi-document.c b/dvi/dvi-document.c
index 4285f68..d0307e3 100644
--- a/dvi/dvi-document.c
+++ b/dvi/dvi-document.c
@@ -28,6 +28,7 @@
#include "pixbuf-device.h"
#include <gtk/gtk.h>
+#include <glib/gi18n.h>
GMutex *dvi_context_mutex = NULL;
@@ -81,14 +82,27 @@ dvi_document_load (EvDocument *document,
filename = g_filename_from_uri (uri, NULL, error);
- if (!filename)
- return FALSE;
+ if (!filename) {
+ g_set_error (error,
+ EV_DOCUMENT_ERROR,
+ EV_DOCUMENT_ERROR_INVALID,
+ _("File not available"));
+ return FALSE;
+ }
if (dvi_document->context)
mdvi_destroy_context (dvi_document->context);
dvi_document->context = mdvi_init_context(dvi_document->params, dvi_document->spec, filename);
+ if (!dvi_document->context) {
+ g_set_error (error,
+ EV_DOCUMENT_ERROR,
+ EV_DOCUMENT_ERROR_INVALID,
+ _("DVI document has incorrect format"));
+ return FALSE;
+ }
+
mdvi_pixbuf_device_init (&dvi_document->context->device);
dvi_document->base_width = dvi_document->context->dvi_page_w * dvi_document->context->params.conv
diff --git a/dvi/mdvi-lib/dviread.c b/dvi/mdvi-lib/dviread.c
index 2f9b5cd..d4eddcc 100644
--- a/dvi/mdvi-lib/dviread.c
+++ b/dvi/mdvi-lib/dviread.c
@@ -853,7 +853,7 @@ DviContext *mdvi_init_context(DviParams *par, DviPageSpec *spec, const char *fil
for(i = 1; i <= 10; i++)
page[i] = fsget4(p);
page[0] = offset;
- offset = (long)fuget4(p);
+ offset = fsget4(p);
/* check if the page is selected */
if(spec && mdvi_page_selected(spec, page, n) == 0) {
DEBUG((DBG_DVI, "Page %d (%ld.%ld.%ld.%ld.%ld.%ld.%ld.%ld.%ld.%ld) ignored by request\n",
diff --git a/po/POTFILES.in b/po/POTFILES.in
index 80fff69..e9da774 100644
--- a/po/POTFILES.in
+++ b/po/POTFILES.in
@@ -11,6 +11,7 @@ data/evince.schemas.in
pdf/ev-poppler.cc
ps/gsdefaults.c
ps/ps-document.c
+dvi/dvi-document.c
shell/eggfindbar.c
shell/ev-application.c
shell/ev-document-types.c