]> source.dussan.org Git - poi.git/commitdiff
bug 62859 -- fix two potential NPEs when initializing XWPFSDTContent
authorTim Allison <tallison@apache.org>
Fri, 26 Oct 2018 19:06:18 +0000 (19:06 +0000)
committerTim Allison <tallison@apache.org>
Fri, 26 Oct 2018 19:06:18 +0000 (19:06 +0000)
git-svn-id: https://svn.apache.org/repos/asf/poi/trunk@1844920 13f79535-47bb-0310-9956-ffa450edef68

src/ooxml/java/org/apache/poi/xwpf/usermodel/XWPFSDTContent.java
src/ooxml/testcases/org/apache/poi/sl/TestFonts.java
src/ooxml/testcases/org/apache/poi/xwpf/usermodel/TestXWPFSDT.java
test-data/document/Bug62859.docx [new file with mode: 0644]

index 99ab66a7ee6bbf3d336c9d04580e49c55a07aaf6..f39c5cf482a733bb8b36b1474c74d17270a08834 100644 (file)
@@ -47,6 +47,9 @@ public class XWPFSDTContent implements ISDTContent {
     private List<ISDTContents> bodyElements = new ArrayList<>();
 
     public XWPFSDTContent(CTSdtContentRun sdtRun, IBody part, IRunBody parent) {
+        if (sdtRun == null) {
+            return;
+        }
         for (CTR ctr : sdtRun.getRArray()) {
             XWPFRun run = new XWPFRun(ctr, parent);
             // runs.add(run);
@@ -55,6 +58,9 @@ public class XWPFSDTContent implements ISDTContent {
     }
 
     public XWPFSDTContent(CTSdtContentBlock block, IBody part, IRunBody parent) {
+        if (block == null) {
+            return;
+        }
         XmlCursor cursor = block.newCursor();
         cursor.selectPath("./*");
         while (cursor.toNextSelection()) {
index b7a6d16a548fcbb63a09d0412a46e5dd8e4d9e1d..f35065de75b9b0d437f43848878b27bf4f80d911 100644 (file)
@@ -74,7 +74,7 @@ public class TestFonts {
     // currently linux and mac return quite different values
     private static final int[] expected_sizes = {
             304, // windows 10, 1080p, MS Office 2016, system text scaling 100% instead of default 125%
-            306, // Windows 10, 15.6" 3840x2160
+            306, 308,// Windows 10, 15.6" 3840x2160
             311, 312, 313, 318,
             348, // Windows 10, 15.6" 3840x2160
             362, // Windows 10, 13.3" 1080p high-dpi
index deac5c09aea209be1b8457d070901fa80c4adec7..9388e087102658bf10e14d88f08a54a2848f8443 100644 (file)
@@ -148,6 +148,19 @@ public final class TestXWPFSDT {
         assertEquals("", sdts.get(0).getTitle());
     }
 
+    @Test
+    public void test62859() throws IOException {
+        //this doesn't test the exact code path for this issue, but
+        //it does test for a related issue, and the fix fixes both.
+        //We should try to add the actual triggering document
+        //to our test suite.
+        XWPFDocument doc = XWPFTestDataSamples.openSampleDocument("Bug62859.docx");
+        List<XWPFAbstractSDT> sdts = extractAllSDTs(doc);
+        assertEquals(1, sdts.size());
+        assertEquals("", sdts.get(0).getTag());
+        assertEquals("", sdts.get(0).getTitle());
+    }
+
     private List<XWPFAbstractSDT> extractAllSDTs(XWPFDocument doc) {
 
         List<XWPFAbstractSDT> sdts = new ArrayList<>();
diff --git a/test-data/document/Bug62859.docx b/test-data/document/Bug62859.docx
new file mode 100644 (file)
index 0000000..e0ede4a
Binary files /dev/null and b/test-data/document/Bug62859.docx differ