vcl/source/window/window.cxx | 16 +++++++++++++--- 1 file changed, 13 insertions(+), 3 deletions(-)
New commits: commit 77b65e3e7ae04f6f00f2cadda9fd80176fe0dec1 Author: Michael Meeks <[email protected]> Date: Sat Nov 26 15:47:15 2016 +0000 tdf#101327 - tolerate exceptions during window construction better. It appears we can end up being a frame window, which is not added into the list of frames; so tolerate that. Change-Id: I7696e79636f7794f327027f0ca73363eef1937e5 Reviewed-on: https://gerrit.libreoffice.org/31235 Tested-by: Jenkins <[email protected]> Reviewed-by: Michael Meeks <[email protected]> Tested-by: Michael Meeks <[email protected]> (cherry picked from commit 115671bf929a82709c535b475bf19f4967a666c8) Reviewed-on: https://gerrit.libreoffice.org/31255 Reviewed-by: Miklos Vajna <[email protected]> diff --git a/vcl/source/window/window.cxx b/vcl/source/window/window.cxx index f00022e..472b0f6 100644 --- a/vcl/source/window/window.cxx +++ b/vcl/source/window/window.cxx @@ -539,12 +539,22 @@ void Window::dispose() pSVData->maWinData.mpFirstFrame = mpWindowImpl->mpFrameData->mpNextFrame; else { + sal_Int32 nWindows = 0; vcl::Window* pSysWin = pSVData->maWinData.mpFirstFrame; - while ( pSysWin->mpWindowImpl->mpFrameData->mpNextFrame.get() != this ) + while ( pSysWin && pSysWin->mpWindowImpl->mpFrameData->mpNextFrame.get() != this ) + { pSysWin = pSysWin->mpWindowImpl->mpFrameData->mpNextFrame; + nWindows++; + } - assert (mpWindowImpl->mpFrameData->mpNextFrame.get() != pSysWin); - pSysWin->mpWindowImpl->mpFrameData->mpNextFrame = mpWindowImpl->mpFrameData->mpNextFrame; + if ( pSysWin ) + { + assert (mpWindowImpl->mpFrameData->mpNextFrame.get() != pSysWin); + pSysWin->mpWindowImpl->mpFrameData->mpNextFrame = mpWindowImpl->mpFrameData->mpNextFrame; + } + else // if it is not in the list, we can't remove it. + SAL_WARN("vcl", "Window " << this << " marked as frame window, " + "is missing from list of " << nWindows << " frames"); } mpWindowImpl->mpFrame->SetCallback( nullptr, nullptr ); pSVData->mpDefInst->DestroyFrame( mpWindowImpl->mpFrame ); _______________________________________________ Libreoffice-commits mailing list [email protected] https://lists.freedesktop.org/mailman/listinfo/libreoffice-commits
