From 5f712e0376cf77386b788093e9d19cfd0ea29913 Mon Sep 17 00:00:00 2001 From: Julien Nabet Date: Mon, 21 Jul 2014 19:26:58 +0200 Subject: Resolves fdo#80906: Delete any control on Dialog editing window crashes LO MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Quick fix for this bt: 3 0x00002aaaab2935d2 in __GI___assert_fail (assertion=0x2aaae1f2806a "_pInterface != 0", file=0x2aaae1f28018 "/home/julien/compile-libreoffice/libreoffice/include/com/sun/star/uno/Reference.h", line=402, function=0x2aaae1f28480 ::operator->() const::__PRETTY_FUNCTION__> "interface_type* com::sun::star::uno::Reference< >::operator->() const [with interface_type = com::sun::star::resource::XStringResourceManager]") at assert.c:101 4 0x00002aaae1e2963b in com::sun::star::uno::Reference::operator-> (this=0x7fffffff2d00) at /home/julien/compile-libreoffice/libreoffice/include/com/sun/star/uno/Reference.h:402 5 0x00002aaae1eb5c87 in basctl::LocalizationMgr::implHandleControlResourceProperties (aControlAny= uno::Any { = {_vptr.XInterface = 0x8935ea8}, }, aDialogName="Dialog1", aCtrlName="TextField1", xStringResourceManager=empty uno::Reference, xSourceStringResolver=empty uno::Reference, eMode=basctl::LocalizationMgr::REMOVE_IDS_FROM_RESOURCE) at /home/julien/compile-libreoffice/libreoffice/basctl/source/basicide/localizationmgr.cxx:202 6 0x00002aaae1eb92a0 in basctl::LocalizationMgr::deleteControlResourceIDsForDeletedEditorObject (pEditor=0x919d820, aControlAny= uno::Any { = {_vptr.XInterface = 0x8935ea8}, }, aCtrlName="TextField1") at /home/julien/compile-libreoffice/libreoffice/basctl/source/basicide/localizationmgr.cxx:896 Indeed, LocalizationMgr::setControlResourceIDsForNewEditorObject just returns if !xStringResourceManager.is() So let's do the same when trying to delete ControlResources See http://opengrok.libreoffice.org/xref/core/basctl/source/basicide/localizationmgr.cxx#835 Cherry-picked from e1840cf944b36b7ead5800a036870e38f4ddb049 Change-Id: I4be49503cd2464f97a25840dfdc29877e5fb2b93 Reviewed-on: https://gerrit.libreoffice.org/10449 Reviewed-by: Caolán McNamara Tested-by: Caolán McNamara --- basctl/source/basicide/localizationmgr.cxx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/basctl/source/basicide/localizationmgr.cxx b/basctl/source/basicide/localizationmgr.cxx index 28123870d47a..9d0cc879ea56 100644 --- a/basctl/source/basicide/localizationmgr.cxx +++ b/basctl/source/basicide/localizationmgr.cxx @@ -199,7 +199,7 @@ sal_Int32 LocalizationMgr::implHandleControlResourceProperties Reference< XPropertySet > xPropertySet; aControlAny >>= xPropertySet; - if( xPropertySet.is() ) + if( xPropertySet.is() && xStringResourceManager.is()) { Sequence< Locale > aLocaleSeq = xStringResourceManager->getLocales(); sal_Int32 nLocaleCount = aLocaleSeq.getLength(); -- cgit v1.2.3