You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@poi.apache.org by ki...@apache.org on 2014/02/20 00:45:08 UTC
svn commit: r1569984 - in /poi: site/src/documentation/content/xdocs/
trunk/src/scratchpad/src/org/apache/poi/hslf/record/
trunk/src/scratchpad/testcases/org/apache/poi/hslf/usermodel/
trunk/test-data/slideshow/
Author: kiwiwings
Date: Wed Feb 19 23:45:07 2014
New Revision: 1569984
URL: http://svn.apache.org/r1569984
Log:
Bug 55732 - PPT can't open, fails with "Couldn't instantiate .... StyleTextProp9Atom : java.lang.ArrayIndexOutOfBoundsException: 56"
Added:
poi/trunk/test-data/slideshow/bug55732.ppt (with props)
Modified:
poi/site/src/documentation/content/xdocs/status.xml
poi/trunk/src/scratchpad/src/org/apache/poi/hslf/record/StyleTextProp9Atom.java
poi/trunk/src/scratchpad/testcases/org/apache/poi/hslf/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=1569984&r1=1569983&r2=1569984&view=diff
==============================================================================
--- poi/site/src/documentation/content/xdocs/status.xml (original)
+++ poi/site/src/documentation/content/xdocs/status.xml Wed Feb 19 23:45:07 2014
@@ -38,6 +38,7 @@
</devs>
<release version="3.11-beta1" date="2014-??-??">
+ <action dev="PD" type="fix" fixes-bug="55732">PPT can't open, fails with "Couldn't instantiate ... StyleTextProp9Atom"</action>
<action dev="PD" type="fix" fixes-bug="56138">HSPF code page strings can be zero length</action>
<action dev="PD" type="add" fixes-bug="53130">SXSSF Shared Strings option support</action>
<action dev="PD" type="fix" fixes-bug="55902">Mixed fonts issue with Chinese characters (unable to form images from ppt)</action>
Modified: poi/trunk/src/scratchpad/src/org/apache/poi/hslf/record/StyleTextProp9Atom.java
URL: http://svn.apache.org/viewvc/poi/trunk/src/scratchpad/src/org/apache/poi/hslf/record/StyleTextProp9Atom.java?rev=1569984&r1=1569983&r2=1569984&view=diff
==============================================================================
--- poi/trunk/src/scratchpad/src/org/apache/poi/hslf/record/StyleTextProp9Atom.java (original)
+++ poi/trunk/src/scratchpad/src/org/apache/poi/hslf/record/StyleTextProp9Atom.java Wed Feb 19 23:45:07 2014
@@ -27,11 +27,9 @@ import org.apache.poi.util.LittleEndian;
/**
* The atom record that specifies additional text formatting.
- *
- * @author Alex Nikiforov [mailto:anikif@gmail.com]
*/
public final class StyleTextProp9Atom extends RecordAtom {
- private final TextPFException9[] autoNumberSchemes;
+ private final TextPFException9[] autoNumberSchemes;
/** Record header. */
private byte[] header;
/** Record data. */
@@ -50,7 +48,7 @@ public final class StyleTextProp9Atom ex
*/
protected StyleTextProp9Atom(byte[] source, int start, int len) {
// Get the header.
- final List<TextPFException9> schemes = new LinkedList<TextPFException9>();
+ final List<TextPFException9> schemes = new LinkedList<TextPFException9>();
header = new byte[8];
System.arraycopy(source,start, header,0,8);
this.version = LittleEndian.getShort(header, 0);
@@ -61,42 +59,51 @@ public final class StyleTextProp9Atom ex
data = new byte[len-8];
System.arraycopy(source, start+8, data, 0, len-8);
for (int i = 0; i < data.length; ) {
- final TextPFException9 item = new TextPFException9(data, i);
- schemes.add(item);
- i += item.getRecordLength();
- //int textCfException9 = LittleEndian.getInt(data, i );
- //TODO analyze textCfException when have some test data
- i += 4;
- int textSiException = LittleEndian.getInt(data, i );
- i += + 4;//TextCFException9 + SIException
- if (0 != (textSiException & 0x40)) {
- i += 2; //skip fBidi
- }
- if (i >= data.length) {
- break;
- }
+ final TextPFException9 item = new TextPFException9(data, i);
+ schemes.add(item);
+ i += item.getRecordLength();
+
+ if (i >= data.length) {
+ break;
+ }
+ int textCfException9 = LittleEndian.getInt(data, i );
+ i += 4;
+ //TODO analyze textCfException when have some test data
+
+ if (i >= data.length) {
+ break;
+ }
+ int textSiException = LittleEndian.getInt(data, i );
+ i += 4;//TextCFException9 + SIException
+
+ if (0 != (textSiException & 0x40)) {
+ i += 2; //skip fBidi
+ }
+ if (i >= data.length) {
+ break;
+ }
}
this.autoNumberSchemes = (TextPFException9[]) schemes.toArray(new TextPFException9[schemes.size()]);
}
- /**
+ /**
* Gets the record type.
* @return the record type.
*/
public long getRecordType() { return this.recordId; }
public short getVersion() {
- return version;
- }
+ return version;
+ }
- public int getLength() {
- return length;
- }
- public TextPFException9[] getAutoNumberTypes() {
- return this.autoNumberSchemes;
- }
+ public int getLength() {
+ return length;
+ }
+ public TextPFException9[] getAutoNumberTypes() {
+ return this.autoNumberSchemes;
+ }
- /**
+ /**
* Write the contents of the record back, so it can be written
* to disk
*
@@ -133,4 +140,4 @@ public final class StyleTextProp9Atom ex
// Update the size (header bytes 5-8)
LittleEndian.putInt(header, 4, data.length);
}
-}
+}
\ No newline at end of file
Modified: poi/trunk/src/scratchpad/testcases/org/apache/poi/hslf/usermodel/TestBugs.java
URL: http://svn.apache.org/viewvc/poi/trunk/src/scratchpad/testcases/org/apache/poi/hslf/usermodel/TestBugs.java?rev=1569984&r1=1569983&r2=1569984&view=diff
==============================================================================
--- poi/trunk/src/scratchpad/testcases/org/apache/poi/hslf/usermodel/TestBugs.java (original)
+++ poi/trunk/src/scratchpad/testcases/org/apache/poi/hslf/usermodel/TestBugs.java Wed Feb 19 23:45:07 2014
@@ -21,6 +21,7 @@ import static org.junit.Assert.assertEqu
import static org.junit.Assert.assertNotNull;
import static org.junit.Assert.assertTrue;
+import java.io.File;
import java.io.InputStream;
import java.util.ArrayList;
import java.util.Date;
@@ -38,6 +39,7 @@ import org.apache.poi.hslf.HSLFTestDataS
import org.apache.poi.hslf.exceptions.OldPowerPointFormatException;
import org.apache.poi.hslf.model.Background;
import org.apache.poi.hslf.model.Fill;
+import org.apache.poi.hslf.model.HeadersFooters;
import org.apache.poi.hslf.model.MasterSheet;
import org.apache.poi.hslf.model.Notes;
import org.apache.poi.hslf.model.Picture;
@@ -484,4 +486,20 @@ public final class TestBugs {
}
}
+ @Test
+ public void bug55732() throws Exception {
+ File file = _slTests.getFile("bug55732.ppt");
+
+ HSLFSlideShow ss = new HSLFSlideShow(file.getAbsolutePath());
+ SlideShow _show = new SlideShow(ss);
+ Slide[] _slides = _show.getSlides();
+
+ /* Iterate over slides and extract text */
+ for( Slide slide : _slides ) {
+ HeadersFooters hf = slide.getHeadersFooters();
+ boolean visible = hf.isHeaderVisible(); // exception happens here
+ }
+ assertTrue("No Exceptions while reading headers", true);
+ }
+
}
Added: poi/trunk/test-data/slideshow/bug55732.ppt
URL: http://svn.apache.org/viewvc/poi/trunk/test-data/slideshow/bug55732.ppt?rev=1569984&view=auto
==============================================================================
Binary file - no diff available.
Propchange: poi/trunk/test-data/slideshow/bug55732.ppt
------------------------------------------------------------------------------
svn:mime-type = application/octet-stream
---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@poi.apache.org
For additional commands, e-mail: commits-help@poi.apache.org