git-svn-id: https://svn.apache.org/repos/asf/poi/trunk@998621 13f79535-47bb-0310-9956-ffa450edef68tags/REL_3_7_BETA3
@@ -56,7 +56,11 @@ public final class OldSectionTable extends SectionTable | |||
{ | |||
// The first short at the offset is the size of the grpprl. | |||
int sepxSize = LittleEndian.getShort(documentStream, fileOffset); | |||
byte[] buf = new byte[sepxSize]; | |||
// Because we don't properly know about all the details of the old | |||
// section properties, and we're trying to decode them as if they | |||
// were the new ones, we sometimes "need" more data than we have. | |||
// As a workaround, have a few extra 0 bytes on the end! | |||
byte[] buf = new byte[sepxSize+2]; | |||
fileOffset += LittleEndian.SHORT_SIZE; | |||
System.arraycopy(documentStream, fileOffset, buf, 0, buf.length); | |||
_sections.add(new SEPX(sed, startAt, endAt, charConv, buf)); |
@@ -119,4 +119,24 @@ public final class TestHWPFOldDocument extends HWPFTestCase { | |||
assertEquals("\u000c", doc.getRange().getParagraph(4).text()); // Section line? | |||
assertEquals("\r", doc.getRange().getParagraph(5).text()); | |||
} | |||
/** | |||
* Another word document with sections, this time with a | |||
* few more section properties set on it | |||
*/ | |||
public void testWord6Sections2() throws Exception { | |||
HWPFOldDocument doc = HWPFTestDataSamples.openOldSampleFile("Word6_sections2.doc"); | |||
assertEquals(1, doc.getRange().numSections()); | |||
assertEquals(57, doc.getRange().numParagraphs()); | |||
assertEquals( | |||
"\r", | |||
doc.getRange().getParagraph(0).text() | |||
); | |||
assertEquals( | |||
"STATEMENT OF INSOLVENCY PRACTICE 10 (SCOTLAND)\r", | |||
doc.getRange().getParagraph(1).text() | |||
); | |||
} | |||
} |