basic/source/sbx/sbxarray.cxx | 6 +++++- toolkit/source/awt/vclxwindow.cxx | 2 ++ 2 files changed, 7 insertions(+), 1 deletion(-)
New commits: commit b2fa854e81d329c9ed49bd10944cea1a430ecf7e Author: Noel Grandin <[email protected]> AuthorDate: Mon Jan 14 13:19:32 2019 +0200 Commit: Noel Grandin <[email protected]> CommitDate: Tue Jan 15 06:56:54 2019 +0100 tdf#122250 Crash when running extension as a consequence of commit 4e07987ce8134312920682e3481c3f8e3d7b66c3 Date: Thu Aug 25 15:08:55 2016 +0200 cid#1371154 Missing move assignment operator this extensions appears to pass bogus data into VCLXWindow::setProperty, so I had to workaround that when debugging Change-Id: Ib6728c0a990bd7cfbfed43d79b7560bd2f7f5a67 Reviewed-on: https://gerrit.libreoffice.org/66297 Tested-by: Jenkins Reviewed-by: Noel Grandin <[email protected]> diff --git a/basic/source/sbx/sbxarray.cxx b/basic/source/sbx/sbxarray.cxx index 668b4df03bc5..c6ccb208065c 100644 --- a/basic/source/sbx/sbxarray.cxx +++ b/basic/source/sbx/sbxarray.cxx @@ -198,10 +198,14 @@ void SbxArray::Put( SbxVariable* pVar, sal_uInt16 nIdx ) if( eType != SbxOBJECT || pVar->GetClass() != SbxClassType::Object ) pVar->Convert( eType ); SbxVariableRef& rRef = GetRef( nIdx ); + // tdf#122250. It is possible that I hold the last reference to myself, so check, otherwise I might + // call SetFlag on myself after I have died. + bool removingMyself = rRef.get() && rRef->GetParameters() == this && GetRefCount() == 1; if(rRef.get() != pVar ) { rRef = pVar; - SetFlag( SbxFlagBits::Modified ); + if (!removingMyself) + SetFlag( SbxFlagBits::Modified ); } } } diff --git a/toolkit/source/awt/vclxwindow.cxx b/toolkit/source/awt/vclxwindow.cxx index 45c7d1dcdc62..6d89c13f3697 100644 --- a/toolkit/source/awt/vclxwindow.cxx +++ b/toolkit/source/awt/vclxwindow.cxx @@ -1722,6 +1722,8 @@ void VCLXWindow::setProperty( const OUString& PropertyName, const css::uno::Any& WinBits nStyle = pWindow->GetStyle(); sal_uInt16 nTmp = 0; Value >>= nTmp; + // clear any dodgy bits passed in, can come from dodgy extensions + nTmp &= o3tl::typed_flags<WindowBorderStyle>::mask; WindowBorderStyle nBorder = static_cast<WindowBorderStyle>(nTmp); if ( !bool(nBorder) ) { _______________________________________________ Libreoffice-commits mailing list [email protected] https://lists.freedesktop.org/mailman/listinfo/libreoffice-commits
