Tags: patch

The problem is not in evince, but is in libpoppler5 (source package:
poppler) [1,2]. This problem is fixed upstream. The attached patch is
taken from the poppler git repository [3], and I've tested that it
works with 0.12.4 (the version of poppler in squeeze).

Please could you reassign this bug to the popper package. It would be
great if this could be fixed for the next Squeeze point release
because the problem is _really_ annoying. I know the problem was fixed
for 0.16.3-1 in sid.

Thanks.

Gordon

[1] https://bugzilla.redhat.com/show_bug.cgi?id=574964
[2] https://bugs.freedesktop.org/show_bug.cgi?id=27728
[3] 
http://cgit.freedesktop.org/poppler/poppler/commit/?id=4ed53e30e735b79c46eab9d54883531c6e187b17

-- 
Gordon Farquharson
GnuPG Key ID: 32D6D676
From 4ed53e30e735b79c46eab9d54883531c6e187b17 Mon Sep 17 00:00:00 2001
From: William Bader <williamba...@hotmail.com>
Date: Fri, 23 Apr 2010 21:52:24 +0000
Subject: Silence some Illegal entry in bfrange block in ToUnicode CMap

Fixes #27728
---
diff --git a/poppler/CharCodeToUnicode.cc b/poppler/CharCodeToUnicode.cc
index 5941190..80fd4c5 100644
--- a/poppler/CharCodeToUnicode.cc
+++ b/poppler/CharCodeToUnicode.cc
@@ -307,8 +308,10 @@ void CharCodeToUnicode::parseCMap1(int (*getCharFunc)(void *), void *data,
 	  error(-1, "Illegal entry in bfrange block in ToUnicode CMap");
 	  break;
 	}
-	if (!(n1 == 2 + nDigits && tok1[0] == '<' && tok1[n1 - 1] == '>' &&
-	      n2 == 2 + nDigits && tok2[0] == '<' && tok2[n2 - 1] == '>')) {
+	if (!(((n1 == 2 + nDigits && tok1[0] == '<' && tok1[n1 - 1] == '>') ||
+	       (n1 == 4 + nDigits && tok1[0] == '<' && tok1[n1 - 1] == '>' && tok1[1] == '0' && tok1[2] == '0')) &&
+	      ((n2 == 2 + nDigits && tok2[0] == '<' && tok2[n2 - 1] == '>') ||
+	       (n2 == 4 + nDigits && tok2[0] == '<' && tok2[n2 - 1] == '>' && tok1[1] == '0' && tok1[2] == '0')))) {
 	  error(-1, "Illegal entry in bfrange block in ToUnicode CMap");
 	  continue;
 	}

Reply via email to