]> www.fi.muni.cz Git - evince.git/blobdiff - backend/dvi/mdvi-lib/pk.c
Fix problem with some pk fonts.
[evince.git] / backend / dvi / mdvi-lib / pk.c
index a5791869af1f36b9e0dd1ba890ce1cf2858dba85..a91161348fe803d175e22820deacafb076884ac2 100644 (file)
@@ -328,13 +328,14 @@ static int pk_load_font(DviParams *unused, DviFont *font)
 {
        int     i;
        int     flag_byte;
-       int     loc, hic, maxch;
+       int     hic, maxch;
        Int32   checksum;
        FILE    *p;
 #ifndef NODEBUG
        char    s[256];
 #endif
        long    alpha, beta, z;
+       unsigned int loc;
 
        font->chars = xnalloc(DviFontChar, 256);
        p = font->in;
@@ -469,6 +470,15 @@ static int pk_load_font(DviParams *unused, DviFont *font)
                        }
                        if(feof(p))
                                break;
+
+                       /* Although the PK format support bigger char codes,
+                         * XeTeX and other extended TeX engines support charcodes up to
+                         * 65536, while normal TeX engine supports only charcode up to 255.*/
+                       if (cc < 0 || cc > 65536) {
+                               mdvi_error (_("%s: unexpected charcode (%d)\n"),
+                                           font->fontname,cc);
+                               goto error;
+                       } 
                        if(cc < loc)
                                loc = cc;
                        if(cc > hic)