From aae3b007935deb08adfd753c25948e446566b6fb Mon Sep 17 00:00:00 2001 From: Ashod Nakashian Date: Wed, 24 Jul 2019 13:16:35 -0400 Subject: editeng: detect invalid paragraphs when drawing This prevents live-lock (endless loop) in case the paragraphs are invalid. Change-Id: I77cc7818dabc8e518bd7ca3f5161d46ba3fe50b4 (cherry picked from commit deab77cb71c01171d0f8284339627ed33798c3a1) Reviewed-on: https://gerrit.libreoffice.org/85002 Tested-by: Jenkins CollaboraOffice Reviewed-by: Michael Meeks Reviewed-on: https://gerrit.libreoffice.org/c/core/+/95105 Tested-by: Marco Cecchetti Reviewed-by: Marco Cecchetti --- editeng/source/editeng/impedit.cxx | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) (limited to 'editeng') diff --git a/editeng/source/editeng/impedit.cxx b/editeng/source/editeng/impedit.cxx index 6c7360d41fea..56970d8ea6cf 100644 --- a/editeng/source/editeng/impedit.cxx +++ b/editeng/source/editeng/impedit.cxx @@ -278,8 +278,10 @@ void ImpEditView::DrawSelectionXOR( EditSelection aTmpSel, vcl::Region* pRegion, ContentNode* pStartNode = aTmpSel.Min().GetNode(); ContentNode* pEndNode = aTmpSel.Max().GetNode(); - sal_Int32 nStartPara = pEditEngine->GetEditDoc().GetPos( pStartNode ); - sal_Int32 nEndPara = pEditEngine->GetEditDoc().GetPos( pEndNode ); + const sal_Int32 nStartPara = pEditEngine->GetEditDoc().GetPos(pStartNode); + const sal_Int32 nEndPara = pEditEngine->GetEditDoc().GetPos(pEndNode); + if (nStartPara == EE_PARA_NOT_FOUND || nEndPara == EE_PARA_NOT_FOUND) + return; for ( sal_Int32 nPara = nStartPara; nPara <= nEndPara; nPara++ ) { ParaPortion* pTmpPortion = pEditEngine->GetParaPortions().SafeGetObject( nPara ); -- cgit v1.2.3