From 1977291fc08de7425db469e21bd2ad385e722707 Mon Sep 17 00:00:00 2001 From: Noel Grandin Date: Mon, 14 Jan 2019 13:19:32 +0200 Subject: 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/66293 Tested-by: Jenkins Reviewed-by: Noel Grandin --- basic/source/sbx/sbxarray.cxx | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) (limited to 'basic') 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 ); } } } -- cgit