sw/source/ui/misc/redlndlg.cxx | 15 ++++++++++++--- 1 file changed, 12 insertions(+), 3 deletions(-)
New commits: commit 1fadebef054b811d8d6487d45d76dea1990e1268 Author: Pierre-Eric Pelloux-Prayer <pierre-e...@lanedo.com> Date: Mon May 27 10:45:08 2013 +0200 fdo#57874: verify GetRedlinePos return value before usage Make sure return value of GetRedlinePos is checked each time before usage. Fix crash in Redline dialog. Change-Id: I5586d8ddc1a7905c524a522addc89969e704048d diff --git a/sw/source/ui/misc/redlndlg.cxx b/sw/source/ui/misc/redlndlg.cxx index 7885bb4..5ea478f 100644 --- a/sw/source/ui/misc/redlndlg.cxx +++ b/sw/source/ui/misc/redlndlg.cxx @@ -293,10 +293,15 @@ void SwRedlineAcceptDlg::InitAuthors() SvTreeListEntry* pSelEntry = pTable->FirstSelected(); while (pSelEntry) { + // find the selected redline + // (fdo#57874: ignore, if the redline is already gone) sal_uInt16 nPos = GetRedlinePos(*pSelEntry); - const SwRedline& rRedln = pSh->GetRedline( nPos ); + if( nPos != USHRT_MAX ) + { + const SwRedline& rRedln = pSh->GetRedline( nPos ); - bIsNotFormated |= nsRedlineType_t::REDLINE_FORMAT != rRedln.GetType(); + bIsNotFormated |= nsRedlineType_t::REDLINE_FORMAT != rRedln.GetType(); + } pSelEntry = pTable->NextSelected(pSelEntry); } @@ -1007,7 +1012,7 @@ IMPL_LINK_NOARG(SwRedlineAcceptDlg, CommandHdl) sal_uInt16 nPos = GetRedlinePos(*pTopEntry); // disable commenting for protected areas - if ((pRed = pSh->GotoRedline(nPos, sal_True)) != 0) + if (nPos != USHRT_MAX && (pRed = pSh->GotoRedline(nPos, sal_True)) != 0) { if( pSh->IsCrsrPtAtEnd() ) pSh->SwapPam(); @@ -1048,6 +1053,10 @@ IMPL_LINK_NOARG(SwRedlineAcceptDlg, CommandHdl) pEntry = pTable->GetParent(pEntry); sal_uInt16 nPos = GetRedlinePos(*pEntry); + + if (nPos == USHRT_MAX) + break; + const SwRedline &rRedline = pSh->GetRedline(nPos); _______________________________________________ Libreoffice-commits mailing list libreoffice-comm...@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/libreoffice-commits