You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@poi.apache.org by ni...@apache.org on 2015/04/24 03:29:11 UTC

svn commit: r1675738 - in /poi/trunk/src/ooxml: java/org/apache/poi/xwpf/usermodel/XWPFParagraph.java testcases/org/apache/poi/xwpf/usermodel/TestXWPFBugs.java

Author: nick
Date: Fri Apr 24 01:29:10 2015
New Revision: 1675738

URL: http://svn.apache.org/r1675738
Log:
#57829 Avoid XmlValueDisconnectedException when removing a XWPFRun from a XWPFParagraph by removing from IRuns as well

Modified:
    poi/trunk/src/ooxml/java/org/apache/poi/xwpf/usermodel/XWPFParagraph.java
    poi/trunk/src/ooxml/testcases/org/apache/poi/xwpf/usermodel/TestXWPFBugs.java

Modified: poi/trunk/src/ooxml/java/org/apache/poi/xwpf/usermodel/XWPFParagraph.java
URL: http://svn.apache.org/viewvc/poi/trunk/src/ooxml/java/org/apache/poi/xwpf/usermodel/XWPFParagraph.java?rev=1675738&r1=1675737&r2=1675738&view=diff
==============================================================================
--- poi/trunk/src/ooxml/java/org/apache/poi/xwpf/usermodel/XWPFParagraph.java (original)
+++ poi/trunk/src/ooxml/java/org/apache/poi/xwpf/usermodel/XWPFParagraph.java Fri Apr 24 01:29:10 2015
@@ -1369,8 +1369,12 @@ public class XWPFParagraph implements IB
      */
     public boolean removeRun(int pos){
         if (pos >= 0 && pos < paragraph.sizeOfRArray()) {
-            getCTP().removeR(pos);
+            // Remove the run from our high level lists
+            XWPFRun run = runs.get(pos);
             runs.remove(pos);
+            iruns.remove(run);
+            // Remove the run from the low-level XML
+            getCTP().removeR(pos);
             return true;
         }
         return false;

Modified: poi/trunk/src/ooxml/testcases/org/apache/poi/xwpf/usermodel/TestXWPFBugs.java
URL: http://svn.apache.org/viewvc/poi/trunk/src/ooxml/testcases/org/apache/poi/xwpf/usermodel/TestXWPFBugs.java?rev=1675738&r1=1675737&r2=1675738&view=diff
==============================================================================
--- poi/trunk/src/ooxml/testcases/org/apache/poi/xwpf/usermodel/TestXWPFBugs.java (original)
+++ poi/trunk/src/ooxml/testcases/org/apache/poi/xwpf/usermodel/TestXWPFBugs.java Fri Apr 24 01:29:10 2015
@@ -88,4 +88,19 @@ public class TestXWPFBugs {
         XWPFDocument doc = XWPFTestDataSamples.openSampleDocument("56392.docx");
     	assertNotNull(doc);
     }
+    
+    /**
+     * Removing a run needs to remove it from both Runs and IRuns
+     */
+    @Test
+    public void test57829() throws Exception {
+        XWPFDocument doc = XWPFTestDataSamples.openSampleDocument("sample.docx");
+        assertNotNull(doc);
+        assertEquals(3, doc.getParagraphs().size());
+        
+        for (XWPFParagraph paragraph : doc.getParagraphs()) {
+            paragraph.removeRun(0);
+            assertNotNull(paragraph.getText());
+        }
+    }
 }



---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@poi.apache.org
For additional commands, e-mail: commits-help@poi.apache.org