From 97fbd19655bd83d9f3682627f88737daf0ca5c39 Mon Sep 17 00:00:00 2001 From: Lionel Elie Mamane Date: Thu, 4 Sep 2014 11:56:12 +0200 Subject: fdo#52076 remove Library dir when no library MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit when saving to same storage (in place) we already did that when empty "Standard" was the only library, but not when there was no library... Cannot get through that state in through UI, but possible through scripting. Change-Id: I0f1129e034ac31b3eaf6bd388a03aee5aae5b87e Reviewed-on: https://gerrit.libreoffice.org/11276 Reviewed-by: Muthu Subramanian K Reviewed-by: Caolán McNamara Tested-by: Caolán McNamara --- basic/source/uno/namecont.cxx | 17 +++++++++++------ 1 file changed, 11 insertions(+), 6 deletions(-) diff --git a/basic/source/uno/namecont.cxx b/basic/source/uno/namecont.cxx index abdd3d5c4595..61672d3c6c1a 100644 --- a/basic/source/uno/namecont.cxx +++ b/basic/source/uno/namecont.cxx @@ -1795,18 +1795,22 @@ void SfxLibraryContainer::storeLibraries_Impl( const uno::Reference< embed::XSto nLibsToSave--; } } - if( !nLibsToSave ) - { - return; - } - boost::scoped_ptr< ::xmlscript::LibDescriptorArray > pLibArray(new ::xmlscript::LibDescriptorArray(nLibsToSave)); - // Write to storage? bool bStorage = i_rStorage.is(); uno::Reference< embed::XStorage > xSourceLibrariesStor; uno::Reference< embed::XStorage > xTargetLibrariesStor; OUString sTempTargetStorName; const bool bInplaceStorage = bStorage && ( i_rStorage == mxStorage ); + + if( nLibsToSave == 0 ) + { + if ( bInplaceStorage && mxStorage->hasByName(maLibrariesDir) ) + { + mxStorage->removeElement(maLibrariesDir); + } + return; + } + if ( bStorage ) { // Don't write if only empty standard lib exists @@ -1884,6 +1888,7 @@ void SfxLibraryContainer::storeLibraries_Impl( const uno::Reference< embed::XSto int iArray = 0; pName = aNames.getConstArray(); ::xmlscript::LibDescriptor aLibDescriptorForExtensionLibs; + boost::scoped_ptr< ::xmlscript::LibDescriptorArray > pLibArray(new ::xmlscript::LibDescriptorArray(nLibsToSave)); for( ; pName != pNamesEnd; ++pName ) { SfxLibrary* pImplLib = getImplLib( *pName ); -- cgit v1.2.3