Kaydet (Commit) 1977291f authored tarafından Noel Grandin's avatar Noel Grandin

tdf#122250 Crash when running extension

as a consequence of

    commit 4e07987c
    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/66293
Tested-by: Jenkins
Reviewed-by: 's avatarNoel Grandin <noel.grandin@collabora.co.uk>
üst 8aa5abf3
......@@ -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 );
}
}
}
......
......@@ -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) )
{
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment