diff options
-rw-r--r-- | basic/source/sbx/sbxarray.cxx | 6 | ||||
-rw-r--r-- | toolkit/source/awt/vclxwindow.cxx | 2 |
2 files changed, 7 insertions, 1 deletions
diff --git a/basic/source/sbx/sbxarray.cxx b/basic/source/sbx/sbxarray.cxx index fc86839c1d24..1b7054f2d9f7 100644 --- a/basic/source/sbx/sbxarray.cxx +++ b/basic/source/sbx/sbxarray.cxx @@ -190,10 +190,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 ddd25add186a..6f8212149db8 100644 --- a/toolkit/source/awt/vclxwindow.cxx +++ b/toolkit/source/awt/vclxwindow.cxx @@ -1717,6 +1717,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) ) { |