Skip to content

Commit b4fa8c5

Browse files
committed
PDFBOX-5901: avoid logging going mad
git-svn-id: https://svn.apache.org/repos/asf/pdfbox/trunk@1921899 13f79535-47bb-0310-9956-ffa450edef68
1 parent afd4cb2 commit b4fa8c5

File tree

1 file changed

+15
-2
lines changed

1 file changed

+15
-2
lines changed

fontbox/src/main/java/org/apache/fontbox/ttf/CmapSubtable.java

Lines changed: 15 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -21,8 +21,10 @@
2121
import java.util.Arrays;
2222
import java.util.Collections;
2323
import java.util.HashMap;
24+
import java.util.HashSet;
2425
import java.util.List;
2526
import java.util.Map;
27+
import java.util.Set;
2628

2729
import org.apache.logging.log4j.Logger;
2830
import org.apache.logging.log4j.LogManager;
@@ -516,6 +518,8 @@ void processSubtype2(TTFDataStream data, int numGlyphs) throws IOException
516518
LOG.warn("subtable has no glyphs");
517519
return;
518520
}
521+
Set<Integer> logged = new HashSet<>();
522+
boolean maxLoggingReached = false;
519523
for (int i = 0; i <= maxSubHeaderIndex; ++i)
520524
{
521525
SubHeader sh = subHeaders[i];
@@ -547,8 +551,17 @@ void processSubtype2(TTFDataStream data, int numGlyphs) throws IOException
547551

548552
if (p >= numGlyphs)
549553
{
550-
LOG.warn("glyphId {} for charcode {} ignored, numGlyphs is {}", p, charCode,
551-
numGlyphs);
554+
if (!maxLoggingReached && !logged.contains(p))
555+
{
556+
LOG.warn("glyphId {} for charcode {} ignored, numGlyphs is {}", p, charCode,
557+
numGlyphs);
558+
logged.add(p);
559+
if (logged.size() > 10)
560+
{
561+
LOG.warn("too many bad glyphIds, more won't be reported for this table");
562+
maxLoggingReached = true;
563+
}
564+
}
552565
continue;
553566
}
554567

0 commit comments

Comments
 (0)