diff -urN poppler-0.10.6.orig/poppler/CMap.cc poppler-0.10.6/poppler/CMap.cc --- poppler-0.10.6.orig/poppler/CMap.cc 2009-03-29 21:50:42.000000000 +0000 +++ poppler-0.10.6/poppler/CMap.cc 2009-05-06 09:06:02.000000000 +0000 @@ -105,12 +105,14 @@ break; } if (tok1[0] == '<' && tok2[0] == '<' && - n1 == n2 && n1 >= 4 && (n1 & 1) == 0) { + n1 == n2 && n1 >= 4 && n1 <= 6 && (n1 & 1) == 0) { tok1[n1 - 1] = tok2[n1 - 1] = '\0'; sscanf(tok1 + 1, "%x", &start); sscanf(tok2 + 1, "%x", &end); n1 = (n1 - 2) / 2; - cmap->addCodeSpace(cmap->vector, start, end, n1); + if (start <= end) { + cmap->addCodeSpace(cmap->vector, start, end, n1); + } } } pst->getToken(tok1, sizeof(tok1), &n1);