From 0b8319bdcdcefea87e0cad3e1165c277f09e9a7a Mon Sep 17 00:00:00 2001 From: Yegor Kozlov Date: Thu, 13 Sep 2007 19:11:10 +0000 Subject: [PATCH] fixed re-open of bug #42844. HSSFEventFactory silently skips unknown records that happen to be continued. git-svn-id: https://svn.apache.org/repos/asf/poi/trunk@575406 13f79535-47bb-0310-9956-ffa450edef68 --- .../hssf/eventusermodel/HSSFEventFactory.java | 18 +++++++----------- .../org/apache/poi/hssf/data/42844.xls | Bin 0 -> 21504 bytes .../eventusermodel/TestHSSFEventFactory.java | 18 ++++++++++++++++++ 3 files changed, 25 insertions(+), 11 deletions(-) create mode 100644 src/testcases/org/apache/poi/hssf/data/42844.xls diff --git a/src/java/org/apache/poi/hssf/eventusermodel/HSSFEventFactory.java b/src/java/org/apache/poi/hssf/eventusermodel/HSSFEventFactory.java index 1cd80d535b..70c989c179 100644 --- a/src/java/org/apache/poi/hssf/eventusermodel/HSSFEventFactory.java +++ b/src/java/org/apache/poi/hssf/eventusermodel/HSSFEventFactory.java @@ -22,15 +22,7 @@ import java.io.InputStream; import java.io.IOException; import org.apache.poi.hssf.eventusermodel.HSSFUserException; -import org.apache.poi.hssf.record.RecordFormatException; -import org.apache.poi.hssf.record.Record; -import org.apache.poi.hssf.record.RecordInputStream; -import org.apache.poi.hssf.record.RecordFactory; -import org.apache.poi.hssf.record.ContinueRecord; -import org.apache.poi.hssf.record.DrawingRecord; -import org.apache.poi.hssf.record.DrawingGroupRecord; -import org.apache.poi.hssf.record.ObjRecord; -import org.apache.poi.hssf.record.TextObjectRecord; +import org.apache.poi.hssf.record.*; import org.apache.poi.poifs.filesystem.POIFSFileSystem; /** @@ -151,7 +143,7 @@ public class HSSFEventFactory { in.nextRecord(); sid = in.getSid();; - + // // for some reasons we have to make the workbook to be at least 4096 bytes // but if we have such workbook we fill the end of it with zeros (many zeros) @@ -215,7 +207,11 @@ public class HSSFEventFactory rec = lastRec; } else { - throw new RecordFormatException("Records should handle ContinueRecord internally. Should not see this exception"); + if (rec instanceof UnknownRecord) { + ;//silently skip records we don't know about + } else { + throw new RecordFormatException("Records should handle ContinueRecord internally. Should not see this exception"); + } } } diff --git a/src/testcases/org/apache/poi/hssf/data/42844.xls b/src/testcases/org/apache/poi/hssf/data/42844.xls new file mode 100644 index 0000000000000000000000000000000000000000..50bb5a85b8a5e67ced80f469d2d803427b601fc3 GIT binary patch literal 21504 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