bug 45000 - Fixed NPE in ListLevel when numberText is null
git-svn-id: https://svn.apache.org/repos/asf/poi/trunk@656757 13f79535-47bb-0310-9956-ffa450edef68
This commit is contained in:
parent
193ac0db79
commit
42b0a779b5
@ -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>
|
||||
|
@ -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>
|
||||
|
@ -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 @@ public class ListLevel
|
||||
_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 @@ public class ListLevel
|
||||
_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 @@ public class ListLevel
|
||||
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 @@ public class ListLevel
|
||||
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;
|
||||
}
|
||||
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user