SwDoc::DelNumRule: fix out-of-bounds index access

When nPos == USHRT_MAX, even if later we checked for that case, just for
the sake of an assert(), we already called operator[] with nPos.

(To reproduce: right click on List 1 -> New -> Cancel, results in a
crash.)

Change-Id: I465b5519000b79bd8b2eaa3b3c1ceb80a182a25a
This commit is contained in:
Miklos Vajna
2013-11-08 15:57:04 +01:00
parent 797681b4f5
commit ffbad09336

View File

@@ -1005,13 +1005,16 @@ bool SwDoc::DelNumRule( const OUString& rName, bool bBroadcast )
{
sal_uInt16 nPos = FindNumRule( rName );
if (nPos == USHRT_MAX)
return false;
if ( (*mpNumRuleTbl)[ nPos ] == GetOutlineNumRule() )
{
OSL_FAIL( "<SwDoc::DelNumRule(..)> - No deletion of outline list style. This is serious defect - please inform OD" );
return false;
}
if( USHRT_MAX != nPos && !IsUsed( *(*mpNumRuleTbl)[ nPos ] ))
if( !IsUsed( *(*mpNumRuleTbl)[ nPos ] ))
{
if (GetIDocumentUndoRedo().DoesUndo())
{