summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMarkus Mohrhard <markus.mohrhard@googlemail.com>2016-08-08 05:36:59 +0200
committerKatarina Behrens <Katarina.Behrens@cib.de>2016-08-09 10:43:48 +0000
commit152de33c612f219471c96975f4ab6fd24d95dc1b (patch)
tree433ef23b7fe8f663dd17afc20360e4d7ee1fa73f
parentf6477e396da204e19a759c86c5addcc5d4f8b78b (diff)
no range based for loop when container is modified, tdf#100870, tdf#101320
This crash has been responsible for around 20% of the 5.2.0.4 crashes with backtraces for the modification of the container similar to: sxlo.dll!SfxWorkWindow::SetChildWindowVisible_Impl(unsigned long lId, bool bEnabled, unsigned short nMode) Line 1834 C++ sfxlo.dll!SfxDispatcher::Update_Impl_(bool bUIActive, bool bIsMDIApp, bool bIsIPOwner, SfxWorkWindow * pTaskWin) Line 1452 C++ sfxlo.dll!SfxDispatcher::Update_Impl(bool bForce) Line 1326 C++ sfxlo.dll!SfxApplication::SetViewFrame_Impl(SfxViewFrame * pFrame) Line 372 C++ sfxlo.dll!SfxViewFrame::SetViewFrame(SfxViewFrame * pFrame) Line 3138 C++ sfxlo.dll!SfxViewFrame::MakeActive_Impl(bool bGrabFocus) Line 1697 C++ sfxlo.dll!SfxFrameWindow_Impl::Notify(NotifyEvent & rNEvt) Line 111 C++ vcllo.dll!vcl::Window::CompatNotify(NotifyEvent & rNEvt) Line 3747 C++ vcllo.dll!vcl::Window::Notify(NotifyEvent & rNEvt) Line 198 C++ vcllo.dll!DockingWindow::Notify(NotifyEvent & rNEvt) Line 633 C++ vcllo.dll!vcl::Window::CompatNotify(NotifyEvent & rNEvt) Line 3747 C++ vcllo.dll!vcl::Window::Notify(NotifyEvent & rNEvt) Line 198 C++ vcllo.dll!DockingWindow::Notify(NotifyEvent & rNEvt) Line 633 C++ sfxlo.dll!SfxDockingWindow::Notify(NotifyEvent & rEvt) Line 1655 C++ vcllo.dll!vcl::Window::CompatNotify(NotifyEvent & rNEvt) Line 3747 C++ vcllo.dll!vcl::Window::Notify(NotifyEvent & rNEvt) Line 198 C++ vcllo.dll!vcl::Window::CompatNotify(NotifyEvent & rNEvt) Line 3747 C++ vcllo.dll!vcl::Window::Notify(NotifyEvent & rNEvt) Line 198 C++ vcllo.dll!vcl::Window::CompatNotify(NotifyEvent & rNEvt) Line 3747 C++ vcllo.dll!vcl::Window::Notify(NotifyEvent & rNEvt) Line 198 C++ vcllo.dll!Control::Notify(NotifyEvent & rNEvt) Line 274 C++ vcllo.dll!vcl::Window::CompatNotify(NotifyEvent & rNEvt) Line 3747 C++ vcllo.dll!vcl::Window::GetFocus() Line 1842 C++ svtlo.dll!SvTreeListBox::GetFocus() Line 2096 C++ swlo.dll!SwContentTree::GetFocus() Line 2571 C++ vcllo.dll!vcl::Window::CompatGetFocus() Line 3716 C++ vcllo.dll!vcl::Window::ImplGrabFocus(GetFocusFlags nFlags) Line 384 C++ vcllo.dll!vcl::Window::GrabFocus() Line 3004 C++ swlo.dll!SwNavigationPI::SwNavigationPI(SfxBindings * _pBindings, SfxChildWindowContext * pCw, vcl::Window * pParent) Line 835 C++ swlo.dll!VclPtr<SwNavigationPI>::Create<SfxBindings * __ptr64 & __ptr64,SwNavigationChild * __ptr64 const,vcl::Window * __ptr64 & __ptr64>(SfxBinsfdings * & <arg_0>, SwNavigationChild * const && <arg_1>, vcl::Window * & <arg_2>) Line 131 C++ swlo.dll!SwNavigationChild::SwNavigationChild(vcl::Window * pParent, unsigned short nId, SfxBindings * _pBindings, SfxChildWinInfo * __formal) Line 1306 C++ swlo.dll!SwNavigationChild::CreateImpl(vcl::Window * pParent, SfxBindings * pBindings, SfxChildWinInfo * pInfo) Line 69 C++ sfxlo.dll!SfxChildWindow::CreateContext(unsigned short nContextId, SfxBindings & rBindings) Line 457 C++ sfxlo.dll!SfxWorkWindow::CreateChildWin_Impl(SfxChildWin_Impl * pCW, bool bSetFocus) Line 1436 C++ sfxlo.dll!SfxWorkWindow::UpdateChildWindows_Impl() Line 1328 C++ sfxlo.dll!SfxWorkWindow::UpdateObjectBars_Impl() Line 1283 C++ sfxlo.dll!SfxFrameWorkWin_Impl::UpdateObjectBars_Impl() Line 1114 C++ sfxlo.dll!SfxDispatcher::Update_Impl(bool bForce) Line 1329 C++ sfxlo.dll!SfxBaseController::ConnectSfxFrame_Impl(const SfxBaseController::ConnectSfxFrame i_eConnect) Line 1326 C++ sfxlo.dll!SfxBaseController::attachFrame(const com::sun::star::uno::Reference<com::sun::star::frame::XFrame> & xFrame) Line 584 C++ sfxlo.dll!`anonymous namespace'::SfxFrameLoader_Impl::impl_createDocumentView(const com::sun::star::uno::Reference<com::sun::star::frame::XModel2> & i_rModel, const com::sun::star::uno::Reference<com::sun::star::frame::XFrame> & i_rFrame, const comphelper::NamedValueCollection & i_rViewFactoryArgs, const rtl::OUString & i_rViewName) Line 604 C++ sfxlo.dll!`anonymous namespace'::SfxFrameLoader_Impl::load(const com::sun::star::uno::Sequence<com::sun::star::beans::PropertyValue> & rArgs, const com::sun::star::uno::Reference<com::sun::star::frame::XFrame> & _rTargetFrame) Line 721 C++ fwklo.dll!framework::LoadEnv::impl_loadContent() Line 1122 C++ fwklo.dll!framework::LoadEnv::startLoading() Line 379 C++ fwklo.dll!framework::LoadDispatcher::impl_dispatch(const com::sun::star::util::URL & rURL, const com::sun::star::uno::Sequence<com::sun::star::beans::PropertyValue> & lArguments, const com::sun::star::uno::Reference<com::sun::star::frame::XDispatchResultListener> & xListener) Line 116 C++ fwklo.dll!framework::LoadDispatcher::dispatch(const com::sun::star::util::URL & aURL, const com::sun::star::uno::Sequence<com::sun::star::beans::PropertyValue> & lArguments) Line 55 C++ sfxlo.dll!RecentDocsView::ExecuteHdl_Impl(RecentDocsView * __formal, void * p) Line 335 C++ sfxlo.dll!RecentDocsView::LinkStubExecuteHdl_Impl(void * instance, void * data) Line 327 C++ vcllo.dll!Link<void * __ptr64,void>::Call(void * data) Line 84 C++ vcllo.dll!ImplHandleUserEvent(ImplSVEvent * pSVEvent) Line 1949 C++ vcllo.dll!ImplWindowFrameProc(vcl::Window * _pWindow, SalEvent nEvent, const void * pEvent) Line 2497 C++ vcllo.dll!SalFrame::CallCallback(SalEvent nEvent, const void * pEvent) Line 282 C++ vcllo.dll!ImplHandleUserEvent(HWND__ * hWnd, __int64 lParam) Line 4110 C++ vcllo.dll!SalFrameWndProc(HWND__ * hWnd, unsigned int nMsg, unsigned __int64 wParam, __int64 lParam, int & rDef) Line 5774 C++ vcllo.dll!SalFrameWndProcW(HWND__ * hWnd, unsigned int nMsg, unsigned __int64 wParam, __int64 lParam) Line 5907 C++ [External Code] vcllo.dll!ImplSalDispatchMessage(tagMSG * pMsg) Line 572 C++ vcllo.dll!ImplSalYield(bool bWait, bool bHandleAllCurrentEvents) Line 591 C++ vcllo.dll!WinSalInstance::DoYield(bool bWait, bool bHandleAllCurrentEvents, unsigned __int64 nReleased) Line 654 C++ vcllo.dll!ImplYield(bool i_bWait, bool i_bAllEvents, const unsigned __int64 nReleased) Line 510 C++ vcllo.dll!Application::Yield() Line 556 C++ vcllo.dll!Application::Execute() Line 472 C++ sofficeapp.dll!desktop::Desktop::DoExecute() Line 1327 C++ sofficeapp.dll!desktop::Desktop::Main() Line 1646 C++ vcllo.dll!ImplSVMain() Line 177 C++ vcllo.dll!SVMain() Line 216 C++ sofficeapp.dll!soffice_main() Line 165 C++ soffice.bin!sal_main() Line 48 C soffice.bin!main(int argc, char * * argv) Line 47 C soffice.bin!WinMain(void * _hinst, void * _dummy, char * _cmdline, int _nshow) Line 47 C [External Code] Change-Id: I4f699952d144a9c276ce53604dc66418abc4baee Reviewed-on: https://gerrit.libreoffice.org/27977 Tested-by: Jenkins <ci@libreoffice.org> Reviewed-by: Markus Mohrhard <markus.mohrhard@googlemail.com> (cherry picked from commit b0f4291e5c0fe6d61d621e692cbc8bea4cb4c401) Reviewed-on: https://gerrit.libreoffice.org/27985 Reviewed-by: Katarina Behrens <Katarina.Behrens@cib.de>
-rw-r--r--sfx2/source/appl/workwin.cxx3
1 files changed, 2 insertions, 1 deletions
diff --git a/sfx2/source/appl/workwin.cxx b/sfx2/source/appl/workwin.cxx
index 537405c13447..eb0f07979168 100644
--- a/sfx2/source/appl/workwin.cxx
+++ b/sfx2/source/appl/workwin.cxx
@@ -1291,8 +1291,9 @@ void SfxWorkWindow::UpdateObjectBars_Impl()
void SfxWorkWindow::UpdateChildWindows_Impl()
{
// any current or in the context available Childwindows
- for (SfxChildWin_Impl* pCW : aChildWins)
+ for ( size_t n=0; n<aChildWins.size(); n++ )
{
+ SfxChildWin_Impl *pCW = aChildWins[n];
SfxChildWindow *pChildWin = pCW->pWin;
bool bCreate = false;
if ( pCW->nId && !pCW->bDisabled && (pCW->aInfo.nFlags & SfxChildWindowFlags::ALWAYSAVAILABLE || IsVisible_Impl( pCW->nVisibility ) ) )