[Libreoffice-commits] core.git: editeng/source

Caolán McNamara caolanm at redhat.com
Tue Oct 1 07:18:53 PDT 2013


 editeng/source/editeng/impedit2.cxx |    9 ++++++---
 1 file changed, 6 insertions(+), 3 deletions(-)

New commits:
commit 165aca6a01ede62d0ce7577a90709bd9bd43b769
Author: Caolán McNamara <caolanm at redhat.com>
Date:   Tue Oct 1 15:14:30 2013 +0100

    Resolves: rhbz#1013480 crash in EditLineList::operator[]
    
    avoid crashing anyway, though unknown how to end up in
    this scenario
    
    Change-Id: Ib602c73478e5c4772cfef73f70c67ad22877a39f

diff --git a/editeng/source/editeng/impedit2.cxx b/editeng/source/editeng/impedit2.cxx
index d348219..515842e 100644
--- a/editeng/source/editeng/impedit2.cxx
+++ b/editeng/source/editeng/impedit2.cxx
@@ -4162,10 +4162,13 @@ Rectangle ImpEditEngine::GetEditCursor( ParaPortion* pPortion, sal_uInt16 nIndex
                         ? GetYValue( rLSItem.GetInterLineSpace() ) : 0;
 
     sal_uInt16 nCurIndex = 0;
-    OSL_ENSURE( pPortion->GetLines().Count(), "Empty ParaPortion in GetEditCursor!" );
+    size_t nLineCount = pPortion->GetLines().Count();
+    OSL_ENSURE( nLineCount, "Empty ParaPortion in GetEditCursor!" );
+    if (nLineCount == 0)
+        return Rectangle();
     const EditLine* pLine = NULL;
     sal_Bool bEOL = ( nFlags & GETCRSR_ENDOFLINE ) ? sal_True : sal_False;
-    for ( sal_uInt16 nLine = 0; nLine < pPortion->GetLines().Count(); nLine++ )
+    for (size_t nLine = 0; nLine < nLineCount; ++nLine)
     {
         const EditLine* pTmpLine = pPortion->GetLines()[nLine];
         if ( ( pTmpLine->GetStart() == nIndex ) || ( pTmpLine->IsIn( nIndex, bEOL ) ) )
@@ -4184,7 +4187,7 @@ Rectangle ImpEditEngine::GetEditCursor( ParaPortion* pPortion, sal_uInt16 nIndex
         // Cursor at the End of the paragraph.
         OSL_ENSURE( nIndex == nCurIndex, "Index dead wrong in GetEditCursor!" );
 
-        pLine = pPortion->GetLines()[pPortion->GetLines().Count()-1];
+        pLine = pPortion->GetLines()[nLineCount-1];
         nY -= pLine->GetHeight();
         if ( !aStatus.IsOutliner() )
             nY -= nSBL;


More information about the Libreoffice-commits mailing list