[poppler] Branch 'xpdf303merge' - poppler/CMap.cc poppler/CMap.h
Albert Astals Cid
aacid at kemper.freedesktop.org
Mon Sep 5 10:25:15 PDT 2011
poppler/CMap.cc | 58 +++++++-------------------------------------------------
poppler/CMap.h | 2 -
2 files changed, 8 insertions(+), 52 deletions(-)
New commits:
commit b9ecfdf4cb27a19e65817af51c048e8030825035
Author: Albert Astals Cid <aacid at kde.org>
Date: Mon Sep 5 19:27:36 2011 +0200
xpdf303: Delay memory allocation up to when it is really needed
diff --git a/poppler/CMap.cc b/poppler/CMap.cc
index 357b0f0..e26849b 100644
--- a/poppler/CMap.cc
+++ b/poppler/CMap.cc
@@ -104,26 +104,6 @@ CMap *CMap::parse(CMapCache *cache, GooString *collectionA,
} else if (!strcmp(tok1, "/WMode")) {
cmap->wMode = atoi(tok2);
pst->getToken(tok1, sizeof(tok1), &n1);
- } else if (!strcmp(tok2, "begincodespacerange")) {
- while (pst->getToken(tok1, sizeof(tok1), &n1)) {
- if (!strcmp(tok1, "endcodespacerange")) {
- break;
- }
- if (!pst->getToken(tok2, sizeof(tok2), &n2) ||
- !strcmp(tok2, "endcodespacerange")) {
- error(errSyntaxError, -1, "Illegal entry in codespacerange block in CMap");
- break;
- }
- if (tok1[0] == '<' && tok2[0] == '<' &&
- n1 == n2 && n1 >= 4 && (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);
- }
- }
- pst->getToken(tok1, sizeof(tok1), &n1);
} else if (!strcmp(tok2, "begincidchar")) {
while (pst->getToken(tok1, sizeof(tok1), &n1)) {
if (!strcmp(tok1, "endcidchar")) {
@@ -263,45 +243,23 @@ void CMap::copyVector(CMapVectorEntry *dest, CMapVectorEntry *src) {
}
}
-void CMap::addCodeSpace(CMapVectorEntry *vec, Guint start, Guint end,
- Guint nBytes) {
- Guint start2, end2;
- int startByte, endByte, i, j;
-
- if (nBytes > 1) {
- startByte = (start >> (8 * (nBytes - 1))) & 0xff;
- endByte = (end >> (8 * (nBytes - 1))) & 0xff;
- start2 = start & ((1 << (8 * (nBytes - 1))) - 1);
- end2 = end & ((1 << (8 * (nBytes - 1))) - 1);
- for (i = startByte; i <= endByte; ++i) {
- if (!vec[i].isVector) {
- vec[i].isVector = gTrue;
- vec[i].vector =
- (CMapVectorEntry *)gmallocn(256, sizeof(CMapVectorEntry));
- for (j = 0; j < 256; ++j) {
- vec[i].vector[j].isVector = gFalse;
- vec[i].vector[j].cid = 0;
- }
- }
- addCodeSpace(vec[i].vector, start2, end2, nBytes - 1);
- }
- }
-}
-
void CMap::addCIDs(Guint start, Guint end, Guint nBytes, CID firstCID) {
CMapVectorEntry *vec;
CID cid;
int byte;
- Guint i;
+ Guint i, j;
vec = vector;
for (i = nBytes - 1; i >= 1; --i) {
byte = (start >> (8 * i)) & 0xff;
if (!vec[byte].isVector) {
- error(errSyntaxError, -1,
- "Invalid CID ({0:x} - {1:x} [{2:d} bytes]) in CMap",
- start, end, nBytes);
- return;
+ vec[byte].isVector = gTrue;
+ vec[byte].vector =
+ (CMapVectorEntry *)gmallocn(256, sizeof(CMapVectorEntry));
+ for (j = 0; j < 256; ++j) {
+ vec[byte].vector[j].isVector = gFalse;
+ vec[byte].vector[j].cid = 0;
+ }
}
vec = vec[byte].vector;
}
diff --git a/poppler/CMap.h b/poppler/CMap.h
index 7803d63..f2e61f1 100644
--- a/poppler/CMap.h
+++ b/poppler/CMap.h
@@ -82,8 +82,6 @@ private:
CMap(GooString *collectionA, GooString *cMapNameA, int wModeA);
void useCMap(CMapCache *cache, char *useName);
void copyVector(CMapVectorEntry *dest, CMapVectorEntry *src);
- void addCodeSpace(CMapVectorEntry *vec, Guint start, Guint end,
- Guint nBytes);
void addCIDs(Guint start, Guint end, Guint nBytes, CID firstCID);
void freeCMapVector(CMapVectorEntry *vec);
void setReverseMapVector(Guint startCode, CMapVectorEntry *vec,
More information about the poppler
mailing list