aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--poi-ooxml/src/main/java/org/apache/poi/xssf/usermodel/XSSFVMLDrawing.java8
-rw-r--r--poi-ooxml/src/test/java/org/apache/poi/xssf/usermodel/TestXSSFBugs.java12
2 files changed, 18 insertions, 2 deletions
diff --git a/poi-ooxml/src/main/java/org/apache/poi/xssf/usermodel/XSSFVMLDrawing.java b/poi-ooxml/src/main/java/org/apache/poi/xssf/usermodel/XSSFVMLDrawing.java
index 9f7fe0801c..5d1932c908 100644
--- a/poi-ooxml/src/main/java/org/apache/poi/xssf/usermodel/XSSFVMLDrawing.java
+++ b/poi-ooxml/src/main/java/org/apache/poi/xssf/usermodel/XSSFVMLDrawing.java
@@ -55,6 +55,7 @@ import org.apache.xmlbeans.XmlCursor;
import org.apache.xmlbeans.XmlException;
import org.apache.xmlbeans.XmlObject;
import org.apache.xmlbeans.XmlOptions;
+import org.apache.xmlbeans.impl.values.XmlValueOutOfRangeException;
import org.openxmlformats.schemas.officeDocument.x2006.sharedTypes.STTrueFalse;
/**
@@ -301,7 +302,12 @@ public final class XSSFVMLDrawing extends POIXMLDocumentPart {
}
CTClientData cldata = sh.getClientDataArray(0);
- if(cldata.getObjectType() != STObjectType.NOTE) {
+ try {
+ if (cldata.getObjectType() != STObjectType.NOTE) {
+ return false;
+ }
+ } catch (XmlValueOutOfRangeException e) {
+ // see https://bz.apache.org/bugzilla/show_bug.cgi?id=66827
return false;
}
diff --git a/poi-ooxml/src/test/java/org/apache/poi/xssf/usermodel/TestXSSFBugs.java b/poi-ooxml/src/test/java/org/apache/poi/xssf/usermodel/TestXSSFBugs.java
index 3c55db989d..700196e53c 100644
--- a/poi-ooxml/src/test/java/org/apache/poi/xssf/usermodel/TestXSSFBugs.java
+++ b/poi-ooxml/src/test/java/org/apache/poi/xssf/usermodel/TestXSSFBugs.java
@@ -3891,7 +3891,17 @@ public final class TestXSSFBugs extends BaseTestBugzillaIssues {
for (int i = 0; i < expectedCount; i++) {
assertNotNull(sst.getItemAt(i));
}
-
+ XSSFSheet ws = wb.getSheetAt(0);
+ int nRowCount = ws.getLastRowNum(); // does not include header row in the count
+ for (int r = 1; r <= nRowCount; r++) {
+ XSSFRow row = ws.getRow(r);
+ if (row != null) {
+ XSSFCell cellSymbol = row.getCell(0);
+ if (cellSymbol != null) {
+ XSSFComment comment = cellSymbol.getCellComment();
+ }
+ }
+ }
}
}