Author: nick
Date: Mon Dec 17 06:19:19 2007
New Revision: 604878
URL: http://svn.apache.org/viewvc?rev=604878&view=rev
Log:
Avoid a rare ArrayIndexOutOfBoundsException on some word table stuff (patch
from bug #44078)
Added:
poi/trunk/src/scratchpad/testcases/org/apache/poi/hwpf/data/AIOOB-Tap.doc
(with props)
Modified:
poi/trunk/src/scratchpad/src/org/apache/poi/hwpf/sprm/TableSprmUncompressor.java
poi/trunk/src/scratchpad/testcases/org/apache/poi/hwpf/usermodel/TestProblems.java
Modified:
poi/trunk/src/scratchpad/src/org/apache/poi/hwpf/sprm/TableSprmUncompressor.java
URL:
http://svn.apache.org/viewvc/poi/trunk/src/scratchpad/src/org/apache/poi/hwpf/sprm/TableSprmUncompressor.java?rev=604878&r1=604877&r2=604878&view=diff
==============================================================================
---
poi/trunk/src/scratchpad/src/org/apache/poi/hwpf/sprm/TableSprmUncompressor.java
(original)
+++
poi/trunk/src/scratchpad/src/org/apache/poi/hwpf/sprm/TableSprmUncompressor.java
Mon Dec 17 06:19:19 2007
@@ -148,8 +148,10 @@
for (int x = 0; x < itcMac; x++)
{
- if(hasTCs) rgtc[x] = TableCellDescriptor.convertBytesToTC(grpprl,
- offset + (1 + ( (itcMac + 1) * 2) + (x * 20)));
+ // Sometimes, the grpprl does not contain data at every offset. I
have no idea why this happens.
+ if(hasTCs && offset + (1 + ( (itcMac + 1) * 2) + (x * 20)) <
grpprl.length)
+ rgtc[x] = TableCellDescriptor.convertBytesToTC(grpprl,
+ offset + (1 + ( (itcMac + 1) * 2) + (x * 20)));
else
rgtc[x] = new TableCellDescriptor();
}
Added: poi/trunk/src/scratchpad/testcases/org/apache/poi/hwpf/data/AIOOB-Tap.doc
URL:
http://svn.apache.org/viewvc/poi/trunk/src/scratchpad/testcases/org/apache/poi/hwpf/data/AIOOB-Tap.doc?rev=604878&view=auto
==============================================================================
Binary file - no diff available.
Propchange:
poi/trunk/src/scratchpad/testcases/org/apache/poi/hwpf/data/AIOOB-Tap.doc
------------------------------------------------------------------------------
svn:mime-type = application/msword
Modified:
poi/trunk/src/scratchpad/testcases/org/apache/poi/hwpf/usermodel/TestProblems.java
URL:
http://svn.apache.org/viewvc/poi/trunk/src/scratchpad/testcases/org/apache/poi/hwpf/usermodel/TestProblems.java?rev=604878&r1=604877&r2=604878&view=diff
==============================================================================
---
poi/trunk/src/scratchpad/testcases/org/apache/poi/hwpf/usermodel/TestProblems.java
(original)
+++
poi/trunk/src/scratchpad/testcases/org/apache/poi/hwpf/usermodel/TestProblems.java
Mon Dec 17 06:19:19 2007
@@ -53,8 +53,25 @@
Section s = r.getSection(x);
for (int y = 0; y < s.numParagraphs(); y++) {
Paragraph paragraph = s.getParagraph(y);
- System.out.println(paragraph.getCharacterRun(0).text());
+
//System.out.println(paragraph.getCharacterRun(0).text());
}
}
}
+
+ /**
+ * AIOOB for TableSprmUncompressor.unCompressTAPOperation
+ */
+ public void testSprmAIOOB() throws Exception {
+ HWPFDocument doc = new HWPFDocument(new FileInputStream(dirname +
"/AIOOB-Tap.doc"));
+
+ Range r = doc.getRange();
+ StyleSheet styleSheet = doc.getStyleSheet();
+ for (int x = 0; x < r.numSections(); x++) {
+ Section s = r.getSection(x);
+ for (int y = 0; y < s.numParagraphs(); y++) {
+ Paragraph paragraph = s.getParagraph(y);
+
//System.out.println(paragraph.getCharacterRun(0).text());
+ }
+ }
+ }
}
---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]