Author: tallison
Date: Fri Jul 14 13:54:06 2017
New Revision: 1801966
URL: http://svn.apache.org/viewvc?rev=1801966&view=rev
Log:
bug 61286/bug 61287 -- allow WriteProtectRecord to have 2 bytes, and allow for
HeaderFooter to be empty.
Added:
poi/trunk/test-data/spreadsheet/61287.xls (with props)
Modified:
poi/site/src/documentation/content/xdocs/status.xml
poi/trunk/src/java/org/apache/poi/hssf/record/HeaderFooterBase.java
poi/trunk/src/java/org/apache/poi/hssf/record/WriteProtectRecord.java
poi/trunk/src/testcases/org/apache/poi/hssf/usermodel/TestBugs.java
Modified: poi/site/src/documentation/content/xdocs/status.xml
URL:
http://svn.apache.org/viewvc/poi/site/src/documentation/content/xdocs/status.xml?rev=1801966&r1=1801965&r2=1801966&view=diff
==============================================================================
--- poi/site/src/documentation/content/xdocs/status.xml (original)
+++ poi/site/src/documentation/content/xdocs/status.xml Fri Jul 14 13:54:06 2017
@@ -58,6 +58,7 @@
<release version="3.17-beta2" date="2017-09-??">
<actions>
+ <action dev="PD" type="fix" fixes-bug="61286,21687"
module="HSSF">Handle zero-length headerfooter and 2 byte
WriteProtectRecord</action>
<action dev="PD" type="fix" fixes-bug="github-43" module="SS
Common">RoundUp and RoundDown functions round incorrectly in some
scenarios</action>
<action dev="PD" type="fix" fixes-bug="61294" module="POI Overall">Fix
bug that allowed IOUtils.skipFully to enter infinite loop</action>
<action dev="PD" type="fix" fixes-bug="61266" module="POIFS">More
helpful exception on unsupported old MS Write WRI files</action>
Modified: poi/trunk/src/java/org/apache/poi/hssf/record/HeaderFooterBase.java
URL:
http://svn.apache.org/viewvc/poi/trunk/src/java/org/apache/poi/hssf/record/HeaderFooterBase.java?rev=1801966&r1=1801965&r2=1801966&view=diff
==============================================================================
--- poi/trunk/src/java/org/apache/poi/hssf/record/HeaderFooterBase.java
(original)
+++ poi/trunk/src/java/org/apache/poi/hssf/record/HeaderFooterBase.java Fri Jul
14 13:54:06 2017
@@ -36,6 +36,13 @@ public abstract class HeaderFooterBase e
protected HeaderFooterBase(RecordInputStream in) {
if (in.remaining() > 0) {
int field_1_footer_len = in.readShort();
+ //61287 -- if the footer_len == 0, there may not be a
multibyte flag
+ if (field_1_footer_len == 0) {
+ field_3_text = "";
+ if (in.remaining() == 0) {
+ return;
+ }
+ }
field_2_hasMultibyte = in.readByte() != 0x00;
if (field_2_hasMultibyte) {
Modified: poi/trunk/src/java/org/apache/poi/hssf/record/WriteProtectRecord.java
URL:
http://svn.apache.org/viewvc/poi/trunk/src/java/org/apache/poi/hssf/record/WriteProtectRecord.java?rev=1801966&r1=1801965&r2=1801966&view=diff
==============================================================================
--- poi/trunk/src/java/org/apache/poi/hssf/record/WriteProtectRecord.java
(original)
+++ poi/trunk/src/java/org/apache/poi/hssf/record/WriteProtectRecord.java Fri
Jul 14 13:54:06 2017
@@ -37,6 +37,9 @@ public final class WriteProtectRecord ex
*/
public WriteProtectRecord(RecordInputStream in)
{
+ if (in.remaining() == 2) {
+ in.readShort();
+ }
}
public String toString()
Modified: poi/trunk/src/testcases/org/apache/poi/hssf/usermodel/TestBugs.java
URL:
http://svn.apache.org/viewvc/poi/trunk/src/testcases/org/apache/poi/hssf/usermodel/TestBugs.java?rev=1801966&r1=1801965&r2=1801966&view=diff
==============================================================================
--- poi/trunk/src/testcases/org/apache/poi/hssf/usermodel/TestBugs.java
(original)
+++ poi/trunk/src/testcases/org/apache/poi/hssf/usermodel/TestBugs.java Fri Jul
14 13:54:06 2017
@@ -26,6 +26,7 @@ import static org.junit.Assert.assertSam
import static org.junit.Assert.assertTrue;
import static org.junit.Assert.fail;
+import javax.imageio.ImageIO;
import java.awt.image.BufferedImage;
import java.io.ByteArrayInputStream;
import java.io.ByteArrayOutputStream;
@@ -43,8 +44,6 @@ import java.util.List;
import java.util.Locale;
import java.util.TimeZone;
-import javax.imageio.ImageIO;
-
import org.apache.poi.EncryptedDocumentException;
import org.apache.poi.hssf.HSSFITestDataProvider;
import org.apache.poi.hssf.HSSFTestDataSamples;
@@ -3096,4 +3095,14 @@ public final class TestBugs extends Base
wb.getCreationHelper().createFormulaEvaluator().evaluateAll();
wb.close();
}
+
+ @Test
+ public void test61287() throws IOException {
+ final Workbook wb =
HSSFTestDataSamples.openSampleWorkbook("61287.xls");
+ ExcelExtractor ex = new ExcelExtractor((HSSFWorkbook)wb);
+ String text = ex.getText();
+ assertContains(text, "èµäº§è´åºè¡¨");
+ wb.close();
+ }
+
}
Added: poi/trunk/test-data/spreadsheet/61287.xls
URL:
http://svn.apache.org/viewvc/poi/trunk/test-data/spreadsheet/61287.xls?rev=1801966&view=auto
==============================================================================
Binary file - no diff available.
Propchange: poi/trunk/test-data/spreadsheet/61287.xls
------------------------------------------------------------------------------
svn:mime-type = application/vnd.ms-excel
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]