diff options
author | Michael Stahl <mst@openoffice.org> | 2010-07-01 18:09:48 +0200 |
---|---|---|
committer | Michael Stahl <mst@openoffice.org> | 2010-07-01 18:09:48 +0200 |
commit | 513cbeb409f73108ba1a8455ceb04f8aa03b2b63 (patch) | |
tree | d82ea307fad0b97e4c47531b136fe9ef2bb8d558 /sw | |
parent | f9efce57cfb684fae83b8f2ffa1d61434b20e20d (diff) |
sw33bf06: #i112577#: SwPaM::Find: apply patch by cmc: fix null ViewShell crash
Diffstat (limited to 'sw')
-rw-r--r-- | sw/source/core/crsr/findtxt.cxx | 14 |
1 files changed, 8 insertions, 6 deletions
diff --git a/sw/source/core/crsr/findtxt.cxx b/sw/source/core/crsr/findtxt.cxx index 9fd6dd0516e9..4a0697692975 100644 --- a/sw/source/core/crsr/findtxt.cxx +++ b/sw/source/core/crsr/findtxt.cxx @@ -53,8 +53,6 @@ #include <viewsh.hxx> #include <vcl/window.hxx> -#define POSTITMGR ((ViewShell*)pNode->GetDoc()->GetDocShell()->GetWrtShell())->GetPostItMgr() - using namespace ::com::sun::star; using namespace util; @@ -333,9 +331,13 @@ BYTE SwPaM::Find( const SearchOptions& rSearchOpt, BOOL bSearchInNotes , utl::Te } + SwDocShell *const pDocShell = pNode->GetDoc()->GetDocShell(); + ViewShell *const pWrtShell = (pDocShell) ? (ViewShell*)(pDocShell->GetWrtShell()) : 0; + SwPostItMgr *const pPostItMgr = (pWrtShell) ? pWrtShell->GetPostItMgr() : 0; + xub_StrLen aStart = 0; // do we need to finish a note? - if (POSTITMGR->HasActiveSidebarWin()) + if (pPostItMgr && pPostItMgr->HasActiveSidebarWin()) { if (bSearchInNotes) { @@ -347,7 +349,7 @@ BYTE SwPaM::Find( const SearchOptions& rSearchOpt, BOOL bSearchInNotes , utl::Te --aNumberPostits; } //search inside and finsih and put focus back into the doc - if (POSTITMGR->FinishSearchReplace(rSearchOpt,bSrchForward)) + if (pPostItMgr->FinishSearchReplace(rSearchOpt,bSrchForward)) { bFound = true ; break; @@ -355,7 +357,7 @@ BYTE SwPaM::Find( const SearchOptions& rSearchOpt, BOOL bSearchInNotes , utl::Te } else { - POSTITMGR->SetActiveSidebarWin(0); + pPostItMgr->SetActiveSidebarWin(0); } } @@ -391,7 +393,7 @@ BYTE SwPaM::Find( const SearchOptions& rSearchOpt, BOOL bSearchInNotes , utl::Te if ( (bSrchForward && (GetPostIt(aLoop + aIgnore,pHts) < pHts->Count()) ) || ( !bSrchForward && (aLoop!=0) )) { const SwTxtAttr* pTxtAttr = bSrchForward ? (*pHts)[GetPostIt(aLoop+aIgnore,pHts)] : (*pHts)[GetPostIt(aLoop+aIgnore-1,pHts)]; - if ( POSTITMGR->SearchReplace(((SwTxtFld*)pTxtAttr)->GetFld(),rSearchOpt,bSrchForward) ) + if ( pPostItMgr && pPostItMgr->SearchReplace(((SwTxtFld*)pTxtAttr)->GetFld(),rSearchOpt,bSrchForward) ) { bFound = true ; break; |