diff --git a/sw/source/core/layout/findfrm.cxx b/sw/source/core/layout/findfrm.cxx index 50f6107..edb3a5a 100644 --- a/sw/source/core/layout/findfrm.cxx +++ b/sw/source/core/layout/findfrm.cxx @@ -722,10 +722,11 @@ SwFrm *SwFrm::_FindNext() if ( !bIgnoreTab && pThis->IsInTab() ) { SwLayoutFrm *pUp = pThis->GetUpper(); - while ( !pUp->IsCellFrm() ) + while ( pUp && !pUp->IsCellFrm() ) pUp = pUp->GetUpper(); OSL_ENSURE( pUp, "Cntnt in Tabelle aber nicht in Zelle." ); - SwFrm* pNxt = ((SwCellFrm*)pUp)->GetFollowCell(); + + SwFrm* pNxt = (pUp)?((SwCellFrm*)pUp)->GetFollowCell():0; if ( pNxt ) pNxt = ((SwCellFrm*)pNxt)->ContainsCntnt(); if ( !pNxt ) @@ -1083,10 +1084,10 @@ SwFrm *SwFrm::_FindPrev() if ( !bIgnoreTab && pThis->IsInTab() ) { SwLayoutFrm *pUp = pThis->GetUpper(); - while ( !pUp->IsCellFrm() ) + while ( pUp && !pUp->IsCellFrm() ) pUp = pUp->GetUpper(); OSL_ENSURE( pUp, "Cntnt in table but not in cell." ); - if ( pUp->IsAnLower( pPrvCnt ) ) + if ( pUp && pUp->IsAnLower( pPrvCnt ) ) return pPrvCnt; } else @@ -1428,21 +1429,26 @@ void SwFrm::SetDirFlags( sal_Bool bVert ) SwLayoutFrm* SwFrm::GetNextCellLeaf( MakePageType ) { SwFrm* pTmpFrm = this; - while ( !pTmpFrm->IsCellFrm() ) + while ( pTmpFrm && !pTmpFrm->IsCellFrm() ) pTmpFrm = pTmpFrm->GetUpper(); OSL_ENSURE( pTmpFrm, "SwFrm::GetNextCellLeaf() without cell" ); - return ((SwCellFrm*)pTmpFrm)->GetFollowCell(); + if (pTmpFrm) + return ((SwCellFrm*)pTmpFrm)->GetFollowCell(); + return NULL; + } SwLayoutFrm* SwFrm::GetPrevCellLeaf( MakePageType ) { SwFrm* pTmpFrm = this; - while ( !pTmpFrm->IsCellFrm() ) + while ( pTmpFrm && !pTmpFrm->IsCellFrm() ) pTmpFrm = pTmpFrm->GetUpper(); OSL_ENSURE( pTmpFrm, "SwFrm::GetNextPreviousLeaf() without cell" ); - return ((SwCellFrm*)pTmpFrm)->GetPreviousCell(); + if (pTmpFrm) + return ((SwCellFrm*)pTmpFrm)->GetPreviousCell(); + return NULL; } static SwCellFrm* lcl_FindCorrespondingCellFrm( const SwRowFrm& rOrigRow,