You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@poi.apache.org by jo...@apache.org on 2008/05/15 19:49:23 UTC

svn commit: r656757 - in /poi/trunk/src: documentation/content/xdocs/changes.xml documentation/content/xdocs/status.xml scratchpad/src/org/apache/poi/hwpf/model/ListLevel.java

Author: josh
Date: Thu May 15 10:49:23 2008
New Revision: 656757

URL: http://svn.apache.org/viewvc?rev=656757&view=rev
Log:
bug 45000 - Fixed NPE in ListLevel when numberText is null

Modified:
    poi/trunk/src/documentation/content/xdocs/changes.xml
    poi/trunk/src/documentation/content/xdocs/status.xml
    poi/trunk/src/scratchpad/src/org/apache/poi/hwpf/model/ListLevel.java

Modified: poi/trunk/src/documentation/content/xdocs/changes.xml
URL: http://svn.apache.org/viewvc/poi/trunk/src/documentation/content/xdocs/changes.xml?rev=656757&r1=656756&r2=656757&view=diff
==============================================================================
--- poi/trunk/src/documentation/content/xdocs/changes.xml (original)
+++ poi/trunk/src/documentation/content/xdocs/changes.xml Thu May 15 10:49:23 2008
@@ -37,6 +37,7 @@
 
 		<!-- Don't forget to update status.xml too! -->
         <release version="3.1-beta2" date="2008-05-??">
+           <action dev="POI-DEVELOPERS" type="fix">45000 - Fixed NPE in ListLevel when numberText is null</action>
            <action dev="POI-DEVELOPERS" type="fix">44985 - Properly update TextSpecInfoAtom when the parent text is changed</action>
            <action dev="POI-DEVELOPERS" type="fix">41187 - fixed HSSFSheet to properly read xls files without ROW records</action>
            <action dev="POI-DEVELOPERS" type="fix">44950 - fixed HSSFFormulaEvaluator.evaluateInCell() and Area3DEval.getValue() also added validation for number of elements in AreaEvals</action>

Modified: poi/trunk/src/documentation/content/xdocs/status.xml
URL: http://svn.apache.org/viewvc/poi/trunk/src/documentation/content/xdocs/status.xml?rev=656757&r1=656756&r2=656757&view=diff
==============================================================================
--- poi/trunk/src/documentation/content/xdocs/status.xml (original)
+++ poi/trunk/src/documentation/content/xdocs/status.xml Thu May 15 10:49:23 2008
@@ -34,6 +34,7 @@
 	<!-- Don't forget to update changes.xml too! -->
     <changes>
         <release version="3.1-beta2" date="2008-05-??">
+           <action dev="POI-DEVELOPERS" type="fix">45000 - Fixed NPE in ListLevel when numberText is null</action>
            <action dev="POI-DEVELOPERS" type="fix">44985 - Properly update TextSpecInfoAtom when the parent text is changed</action>
            <action dev="POI-DEVELOPERS" type="fix">41187 - fixed HSSFSheet to properly read xls files without ROW records</action>
            <action dev="POI-DEVELOPERS" type="fix">44950 - fixed HSSFFormulaEvaluator.evaluateInCell() and Area3DEval.getValue() also added validation for number of elements in AreaEvals</action>

Modified: poi/trunk/src/scratchpad/src/org/apache/poi/hwpf/model/ListLevel.java
URL: http://svn.apache.org/viewvc/poi/trunk/src/scratchpad/src/org/apache/poi/hwpf/model/ListLevel.java?rev=656757&r1=656756&r2=656757&view=diff
==============================================================================
--- poi/trunk/src/scratchpad/src/org/apache/poi/hwpf/model/ListLevel.java (original)
+++ poi/trunk/src/scratchpad/src/org/apache/poi/hwpf/model/ListLevel.java Thu May 15 10:49:23 2008
@@ -1,4 +1,3 @@
-
 /* ====================================================================
    Licensed to the Apache Software Foundation (ASF) under one or more
    contributor license agreements.  See the NOTICE file distributed with
@@ -16,22 +15,20 @@
    limitations under the License.
 ==================================================================== */
 
-
 package org.apache.poi.hwpf.model;
 
+import java.util.Arrays;
+
 import org.apache.poi.util.BitField;
 import org.apache.poi.util.LittleEndian;
 
-import org.apache.poi.hwpf.usermodel.CharacterProperties;
-import org.apache.poi.hwpf.usermodel.ParagraphProperties;
-
-import org.apache.poi.hwpf.sprm.ParagraphSprmCompressor;
-import org.apache.poi.hwpf.sprm.CharacterSprmCompressor;
-
-import java.util.Arrays;
-
-public class ListLevel
+/**
+ * 
+ */
+public final class ListLevel
 {
+  private static final int RGBXCH_NUMS_SIZE = 9;
+
   private int _iStartAt;
   private byte _nfc;
   private byte _info;
@@ -70,7 +67,7 @@
     _grpprlPapx = new byte[0];
     _grpprlChpx = new byte[0];
     _numberText = new char[0];
-    _rgbxchNums = new byte[9];
+    _rgbxchNums = new byte[RGBXCH_NUMS_SIZE];
 
     if (numbered)
     {
@@ -90,12 +87,11 @@
     _nfc = buf[offset++];
     _info = buf[offset++];
 
-    _rgbxchNums = new byte[9];
-    for (int x = 0; x < 9; x++)
-    {
-      _rgbxchNums[x] = buf[offset++];
-    }
-    _ixchFollow = buf[offset++];
+    _rgbxchNums = new byte[RGBXCH_NUMS_SIZE];
+    System.arraycopy(buf, offset, _rgbxchNums, 0, RGBXCH_NUMS_SIZE);
+    offset += RGBXCH_NUMS_SIZE;
+  
+   _ixchFollow = buf[offset++];
     _dxaSpace = LittleEndian.getInt(buf, offset);
     offset += LittleEndian.INT_SIZE;
     _dxaIndent = LittleEndian.getInt(buf, offset);
@@ -207,8 +203,8 @@
     offset += LittleEndian.INT_SIZE;
     buf[offset++] = _nfc;
     buf[offset++] = _info;
-    System.arraycopy(_rgbxchNums, 0, buf, offset, _rgbxchNums.length);
-    offset += _rgbxchNums.length;
+    System.arraycopy(_rgbxchNums, 0, buf, offset, RGBXCH_NUMS_SIZE);
+    offset += RGBXCH_NUMS_SIZE;
     buf[offset++] = _ixchFollow;
     LittleEndian.putInt(buf, offset, _dxaSpace);
     offset += LittleEndian.INT_SIZE;
@@ -225,23 +221,33 @@
     System.arraycopy(_grpprlPapx, 0, buf, offset, _cbGrpprlPapx);
     offset += _cbGrpprlPapx;
 
-    LittleEndian.putShort(buf, offset, (short)_numberText.length);
-    offset += LittleEndian.SHORT_SIZE;
-    for (int x = 0; x < _numberText.length; x++)
-    {
-      LittleEndian.putShort(buf, offset, (short)_numberText[x]);
+    if (_numberText == null) {
+      // TODO - write junit to test this flow
+      LittleEndian.putUShort(buf, offset, 0);
+    } else {
+      LittleEndian.putUShort(buf, offset, _numberText.length);
       offset += LittleEndian.SHORT_SIZE;
+      for (int x = 0; x < _numberText.length; x++)
+      {
+        LittleEndian.putUShort(buf, offset, _numberText[x]);
+        offset += LittleEndian.SHORT_SIZE;
+      }
     }
     return buf;
   }
   public int getSizeInBytes()
   {
-      if (_numberText!=null)
-      {
-            return 28 + _cbGrpprlChpx + _cbGrpprlPapx + (_numberText.length * LittleEndian.SHORT_SIZE) + 2;
-      } else {
-          return 28 + _cbGrpprlChpx + _cbGrpprlPapx  + 2;
-      }
+    int result =
+        6 // int byte byte
+        + RGBXCH_NUMS_SIZE
+        + 13 // byte int int byte byte short
+        + _cbGrpprlChpx 
+        + _cbGrpprlPapx
+        + 2; // numberText length
+    if (_numberText != null) {
+      result += _numberText.length * LittleEndian.SHORT_SIZE;
+    }
+    return result;
   }
 
 }



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