From b6dc852992065a32a576772815794a421a00f2f1 Mon Sep 17 00:00:00 2001 From: Yegor Kozlov Date: Sat, 18 Jul 2009 10:03:01 +0000 Subject: [PATCH] fixed WordExtractor to avoid ArrayIndexOutOfBoundsException when encountering empty footnote block git-svn-id: https://svn.apache.org/repos/asf/poi/trunk@795333 13f79535-47bb-0310-9956-ffa450edef68 --- .../org/apache/poi/hwpf/extractor/WordExtractor.java | 11 ++++++++--- .../src/org/apache/poi/hwpf/usermodel/Range.java | 4 ++++ 2 files changed, 12 insertions(+), 3 deletions(-) diff --git a/src/scratchpad/src/org/apache/poi/hwpf/extractor/WordExtractor.java b/src/scratchpad/src/org/apache/poi/hwpf/extractor/WordExtractor.java index 10ac954263..b4308af399 100644 --- a/src/scratchpad/src/org/apache/poi/hwpf/extractor/WordExtractor.java +++ b/src/scratchpad/src/org/apache/poi/hwpf/extractor/WordExtractor.java @@ -23,6 +23,7 @@ import java.io.FileInputStream; import java.io.UnsupportedEncodingException; import java.util.Iterator; import java.util.Arrays; +import java.util.ArrayList; import org.apache.poi.POIOLE2TextExtractor; import org.apache.poi.hwpf.HWPFDocument; @@ -252,9 +253,13 @@ public final class WordExtractor extends POIOLE2TextExtractor { ret.append(getHeaderText()); - String[] text = getParagraphText(); - for(int i=0; i text = new ArrayList(); + text.addAll(Arrays.asList(getParagraphText())); + text.addAll(Arrays.asList(getFootnoteText())); + text.addAll(Arrays.asList(getEndnoteText())); + + for(String p : text) { + ret.append(p); } ret.append(getFooterText()); diff --git a/src/scratchpad/src/org/apache/poi/hwpf/usermodel/Range.java b/src/scratchpad/src/org/apache/poi/hwpf/usermodel/Range.java index eb97077e83..a6fe3fdf4a 100644 --- a/src/scratchpad/src/org/apache/poi/hwpf/usermodel/Range.java +++ b/src/scratchpad/src/org/apache/poi/hwpf/usermodel/Range.java @@ -978,6 +978,10 @@ public class Range { // TODO -instantiable superclass node = (PropertyNode)rpl.get(x); } + if (node.getEnd() <= start) { + return new int[] {rpl.size(), rpl.size()}; + } + int y = x; node = (PropertyNode)rpl.get(y); while(node.getEnd() < end && y < rpl.size()-1) -- 2.39.5