From 3098e0474a9deab8fa6924794c610879188644a4 Mon Sep 17 00:00:00 2001 From: Nick Burch Date: Wed, 15 Aug 2007 14:40:02 +0000 Subject: [PATCH] Patch from Trejkaz from bug #43116 - Fix for Escher handling of embeded OLE2 documents git-svn-id: https://svn.apache.org/repos/asf/poi/trunk@566196 13f79535-47bb-0310-9956-ffa450edef68 --- src/documentation/content/xdocs/changes.xml | 1 + src/documentation/content/xdocs/status.xml | 1 + .../org/apache/poi/ddf/EscherBlipRecord.java | 2 +- .../apache/poi/hssf/data/ole2-embedding.xls | Bin 0 -> 41472 bytes .../poi/hssf/usermodel/TestOLE2Embeding.java | 26 ++++++++++++++++++ 5 files changed, 29 insertions(+), 1 deletion(-) create mode 100644 src/testcases/org/apache/poi/hssf/data/ole2-embedding.xls create mode 100644 src/testcases/org/apache/poi/hssf/usermodel/TestOLE2Embeding.java diff --git a/src/documentation/content/xdocs/changes.xml b/src/documentation/content/xdocs/changes.xml index 58af02a0c..e4f8c8ecd 100644 --- a/src/documentation/content/xdocs/changes.xml +++ b/src/documentation/content/xdocs/changes.xml @@ -36,6 +36,7 @@ + 43116 - [PATCH] - Fix for Escher layer handling of embeded OLE2 documents 43108 - [PATCH] - Where permissions deny fetching System Properties, use sensible defaults 43093 - [PATCH] - Fix formula evaluator support for Area3D references to other sheets Improvements to HSSFDateUtils.isADateFormat, and have HSSFDateUtil.isCellDateFormatted use this diff --git a/src/documentation/content/xdocs/status.xml b/src/documentation/content/xdocs/status.xml index 04ee81639..bceda3644 100644 --- a/src/documentation/content/xdocs/status.xml +++ b/src/documentation/content/xdocs/status.xml @@ -33,6 +33,7 @@ + 43116 - [PATCH] - Fix for Escher layer handling of embeded OLE2 documents 43108 - [PATCH] - Where permissions deny fetching System Properties, use sensible defaults 43093 - [PATCH] - Fix formula evaluator support for Area3D references to other sheets Improvements to HSSFDateUtils.isADateFormat, and have HSSFDateUtil.isCellDateFormatted use this diff --git a/src/java/org/apache/poi/ddf/EscherBlipRecord.java b/src/java/org/apache/poi/ddf/EscherBlipRecord.java index 9ec3be30e..2c31f3f57 100644 --- a/src/java/org/apache/poi/ddf/EscherBlipRecord.java +++ b/src/java/org/apache/poi/ddf/EscherBlipRecord.java @@ -92,7 +92,7 @@ public class EscherBlipRecord */ public int getRecordSize() { - return field_pictureData.length + 4; + return field_pictureData.length + HEADER_SIZE; } /** diff --git a/src/testcases/org/apache/poi/hssf/data/ole2-embedding.xls b/src/testcases/org/apache/poi/hssf/data/ole2-embedding.xls new file mode 100644 index 0000000000000000000000000000000000000000..521082b6972e54575bd83a6301892a3d537937f7 GIT binary patch literal 41472 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 literal 0 HcmV?d00001 diff --git a/src/testcases/org/apache/poi/hssf/usermodel/TestOLE2Embeding.java b/src/testcases/org/apache/poi/hssf/usermodel/TestOLE2Embeding.java new file mode 100644 index 000000000..b0fd77b88 --- /dev/null +++ b/src/testcases/org/apache/poi/hssf/usermodel/TestOLE2Embeding.java @@ -0,0 +1,26 @@ +package org.apache.poi.hssf.usermodel; + +import java.io.File; +import java.io.FileInputStream; + +import junit.framework.TestCase; + +public class TestOLE2Embeding extends TestCase { + public void testEmbeding() throws Exception { + String dirname = System.getProperty("HSSF.testdata.path"); + String filename = dirname + "/ole2-embedding.xls"; + + File file = new File(filename); + FileInputStream in = new FileInputStream(file); + HSSFWorkbook workbook; + + // This used to break, until bug #43116 was fixed + workbook = new HSSFWorkbook(in); + + in.close(); + + // Check we can get at the Escher layer still + workbook.getAllPictures(); + } +} +