ignore CHPX references zero-length text pieces

git-svn-id: https://svn.apache.org/repos/asf/poi/trunk@1145275 13f79535-47bb-0310-9956-ffa450edef68
This commit is contained in:
Sergey Vladimirov 2011-07-11 18:34:26 +00:00
parent a61064e853
commit 2ee84d720a
1 changed files with 31 additions and 20 deletions

View File

@ -74,31 +74,42 @@ public final class CHPFormattedDiskPage extends FormattedDiskPage
* This constructs a CHPFormattedDiskPage from a raw fkp (512 byte array
* read from a Word file).
*/
public CHPFormattedDiskPage( byte[] documentStream, int offset, TextPieceTable tpt,
boolean ignoreChpxWithoutTextPieces )
public CHPFormattedDiskPage( byte[] documentStream, int offset,
TextPieceTable tpt, boolean ignoreChpxWithoutTextPieces )
{
super(documentStream, offset);
super( documentStream, offset );
for (int x = 0; x < _crun; x++)
{
int startAt = getStart(x);
int endAt = getEnd(x);
if (!ignoreChpxWithoutTextPieces || tpt.isIndexInTable( startAt, endAt ) )
for ( int x = 0; x < _crun; x++ )
{
_chpxList.add(new CHPX(startAt, endAt, tpt, getGrpprl(x)));
}
else
{
logger.log( POILogger.WARN, "CHPX [",
Integer.valueOf( startAt ), "; ",
Integer.valueOf( endAt ),
") (bytes) doesn't have corresponding text pieces "
+ "and will be skipped" );
int startAt = getStart( x );
int endAt = getEnd( x );
_chpxList.add(null);
if ( ignoreChpxWithoutTextPieces
&& !tpt.isIndexInTable( startAt, endAt ) )
{
logger.log( POILogger.WARN, "CHPX [",
Integer.valueOf( startAt ), "; ",
Integer.valueOf( endAt ),
") (bytes) doesn't have corresponding text pieces "
+ "and will be skipped" );
_chpxList.add( null );
continue;
}
CHPX chpx = new CHPX( startAt, endAt, tpt, getGrpprl( x ) );
if ( ignoreChpxWithoutTextPieces
&& chpx.getStart() == chpx.getEnd() )
{
logger.log( POILogger.WARN, chpx
+ " references zero-length range and will be skipped" );
_chpxList.add( null );
continue;
}
_chpxList.add( chpx );
}
}
}
public CHPX getCHPX(int index)