diff options
author | marc-andre@atc.tcs.com <marc-andre@atc.tcs.com> | 2011-07-06 13:15:42 +0530 |
---|---|---|
committer | Caolán McNamara <caolanm@redhat.com> | 2011-07-08 13:41:31 +0100 |
commit | 54a88fdf62d8e7507e7c3822e5fdddfeeeaa335b (patch) | |
tree | dd2694c225f4d42139e320399b11470a14f404c6 | |
parent | 408ffebd26be78170a602104d260ccb0a116b209 (diff) |
Fixed core dump and invalid memory access for some edge cases
(cherry picked from commit b991a2fb76e2859d7f04793ad7ad3a0596d8d630)
Signed-off-by: Caolán McNamara <caolanm@redhat.com>
-rw-r--r-- | sw/source/core/doc/docnew.cxx | 59 | ||||
-rw-r--r-- | sw/source/filter/ww8/ww8par3.cxx | 2 |
2 files changed, 31 insertions, 30 deletions
diff --git a/sw/source/core/doc/docnew.cxx b/sw/source/core/doc/docnew.cxx index 6cc62a173a..111afa7889 100644 --- a/sw/source/core/doc/docnew.cxx +++ b/sw/source/core/doc/docnew.cxx @@ -909,39 +909,40 @@ void SwDoc::UpdateLinks( sal_Bool bUI ) { SfxObjectCreateMode eMode; sal_uInt16 nLinkMode = getLinkUpdateMode( true ); - sal_uInt16 nUpdateDocMode = GetDocShell()->GetUpdateDocMode(); - if( GetDocShell() && - (nLinkMode != NEVER || document::UpdateDocMode::FULL_UPDATE == nUpdateDocMode) && - GetLinkManager().GetLinks().Count() && - SFX_CREATE_MODE_INTERNAL != - ( eMode = GetDocShell()->GetCreateMode()) && - SFX_CREATE_MODE_ORGANIZER != eMode && - SFX_CREATE_MODE_PREVIEW != eMode && - !GetDocShell()->IsPreview() ) - { - ViewShell* pVSh = 0; - sal_Bool bAskUpdate = nLinkMode == MANUAL; - sal_Bool bUpdate = sal_True; - switch(nUpdateDocMode) - { - case document::UpdateDocMode::NO_UPDATE: bUpdate = sal_False;break; - case document::UpdateDocMode::QUIET_UPDATE:bAskUpdate = sal_False; break; - case document::UpdateDocMode::FULL_UPDATE: bAskUpdate = sal_True; break; - } - if( bUpdate && (bUI || !bAskUpdate) ) + if ( GetDocShell()) { + sal_uInt16 nUpdateDocMode = GetDocShell()->GetUpdateDocMode(); + if( (nLinkMode != NEVER || document::UpdateDocMode::FULL_UPDATE == nUpdateDocMode) && + GetLinkManager().GetLinks().Count() && + SFX_CREATE_MODE_INTERNAL != + ( eMode = GetDocShell()->GetCreateMode()) && + SFX_CREATE_MODE_ORGANIZER != eMode && + SFX_CREATE_MODE_PREVIEW != eMode && + !GetDocShell()->IsPreview() ) { - SfxMedium* pMedium = GetDocShell()->GetMedium(); - SfxFrame* pFrm = pMedium ? pMedium->GetLoadTargetFrame() : 0; - Window* pDlgParent = pFrm ? &pFrm->GetWindow() : 0; - if( GetCurrentViewShell() && !GetEditShell( &pVSh ) && !pVSh ) //swmod 071108//swmod 071225 + ViewShell* pVSh = 0; + sal_Bool bAskUpdate = nLinkMode == MANUAL; + sal_Bool bUpdate = sal_True; + switch(nUpdateDocMode) { - ViewShell aVSh( *this, 0, 0 ); + case document::UpdateDocMode::NO_UPDATE: bUpdate = sal_False;break; + case document::UpdateDocMode::QUIET_UPDATE:bAskUpdate = sal_False; break; + case document::UpdateDocMode::FULL_UPDATE: bAskUpdate = sal_True; break; + } + if( bUpdate && (bUI || !bAskUpdate) ) + { + SfxMedium* pMedium = GetDocShell()->GetMedium(); + SfxFrame* pFrm = pMedium ? pMedium->GetLoadTargetFrame() : 0; + Window* pDlgParent = pFrm ? &pFrm->GetWindow() : 0; + if( GetCurrentViewShell() && !GetEditShell( &pVSh ) && !pVSh ) //swmod 071108//swmod 071225 + { + ViewShell aVSh( *this, 0, 0 ); - SET_CURR_SHELL( &aVSh ); - GetLinkManager().UpdateAllLinks( bAskUpdate , sal_True, sal_False, pDlgParent ); + SET_CURR_SHELL( &aVSh ); + GetLinkManager().UpdateAllLinks( bAskUpdate , sal_True, sal_False, pDlgParent ); + } + else + GetLinkManager().UpdateAllLinks( bAskUpdate, sal_True, sal_False, pDlgParent ); } - else - GetLinkManager().UpdateAllLinks( bAskUpdate, sal_True, sal_False, pDlgParent ); } } diff --git a/sw/source/filter/ww8/ww8par3.cxx b/sw/source/filter/ww8/ww8par3.cxx index 2f108cf095..c2e267078e 100644 --- a/sw/source/filter/ww8/ww8par3.cxx +++ b/sw/source/filter/ww8/ww8par3.cxx @@ -762,7 +762,7 @@ bool WW8ListManager::ReadLVL(SwNumFmt& rNumFmt, SfxItemSet*& rpItemSet, for(nLevelB = 0; nLevelB <= nLevel; ++nLevelB) { sal_uInt8 nPos = aOfsNumsXCH[nLevelB]; - if (nPos && sNumString.GetChar(nPos-1) < nMaxLevel) + if (nPos && nPos < sNumString.Len() && sNumString.GetChar(nPos-1) < nMaxLevel) { if (rNotReallyThere[nLevelB]) aOfsNumsXCH[nLevelB] = 0; |