Skip to content

Commit 9162ba9

Browse files
committed
Fix issue with Reading state.
1 parent e6de5b1 commit 9162ba9

File tree

3 files changed

+10
-8
lines changed

3 files changed

+10
-8
lines changed

core/src/main/java/com/itextpdf/core/pdf/PdfReader.java

Lines changed: 8 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -896,16 +896,19 @@ protected PdfDictionary readXrefSection() throws IOException {
896896
int end = 0;
897897
while (true) {
898898
tokens.nextValidToken();
899-
if (tokens.tokenValueEqualsTo(PdfTokenizer.Trailer))
899+
if (tokens.tokenValueEqualsTo(PdfTokenizer.Trailer)) {
900900
break;
901-
if (tokens.getTokenType() != PdfTokenizer.TokenType.Number)
901+
}
902+
if (tokens.getTokenType() != PdfTokenizer.TokenType.Number) {
902903
tokens.throwError(PdfException.ObjectNumberOfTheFirstObjectInThisXrefSubsectionNotFound);
904+
}
903905
int start = tokens.getIntValue();
904906
tokens.nextValidToken();
905-
if (tokens.getTokenType() != PdfTokenizer.TokenType.Number)
907+
if (tokens.getTokenType() != PdfTokenizer.TokenType.Number) {
906908
tokens.throwError(PdfException.NumberOfEntriesInThisXrefSubsectionNotFound);
909+
}
907910
end = tokens.getIntValue() + start;
908-
for (int num = start; num < end; ++num) {
911+
for (int num = start; num < end; num++) {
909912
tokens.nextValidToken();
910913
long pos = tokens.getLongValue();
911914
tokens.nextValidToken();
@@ -916,6 +919,7 @@ protected PdfDictionary readXrefSection() throws IOException {
916919
reference = new PdfIndirectReference(pdfDocument, num, gen, pos);
917920
} else if (reference.checkState(PdfObject.Reading) && reference.getGenNumber() == gen) {
918921
reference.setOffset(pos);
922+
reference.clearState(PdfObject.Reading);
919923
} else {
920924
continue;
921925
}

core/src/main/java/com/itextpdf/core/pdf/PdfXrefTable.java

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,6 @@
77
import java.text.DecimalFormat;
88
import java.util.ArrayList;
99
import java.util.List;
10-
import java.util.Set;
1110
import java.util.TreeSet;
1211

1312
class PdfXrefTable {
@@ -189,7 +188,7 @@ protected void writeXrefTableAndTrailer(PdfDocument document, PdfObject fileId,
189188
xrefStream.put(PdfName.Root, document.getCatalog().getPdfObject());
190189
PdfArray index = new PdfArray();
191190
for (Integer section : sections) {
192-
index.add(new PdfNumber(section.intValue()));
191+
index.add(new PdfNumber(section));
193192
}
194193
if (document.appendMode) {
195194
PdfNumber lastXref = new PdfNumber(document.reader.getLastXref());

core/src/test/java/com/itextpdf/core/pdf/PdfReaderTest.java

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1486,10 +1486,9 @@ public void zeroUpdateTest() throws IOException {
14861486
// trailer
14871487
// <</Size 27/Root 1 0 R/Info 12 0 R//Prev 245232/XRefStm 244927>>
14881488
// startxref
1489-
14901489
Assert.assertFalse(reader.hasFixedXref());
14911490
Assert.assertFalse(reader.hasRebuiltXref());
1492-
1491+
Assert.assertTrue(((PdfDictionary)pdfDoc.getPdfObject(1)).containsKey(PdfName.AcroForm));
14931492
pdfDoc.close();
14941493
}
14951494

0 commit comments

Comments
 (0)