Kaydet (Commit) 4ccb4bda authored tarafından Stephan Bergmann's avatar Stephan Bergmann

fdo#46074 Ignore corrupted items in Recent Documents

üst cf0186de
...@@ -33,6 +33,7 @@ ...@@ -33,6 +33,7 @@
#include <com/sun/star/uno/Any.hxx> #include <com/sun/star/uno/Any.hxx>
#include <com/sun/star/uno/Sequence.hxx> #include <com/sun/star/uno/Sequence.hxx>
#include <cassert>
#include <deque> #include <deque>
#include <algorithm> #include <algorithm>
...@@ -391,20 +392,37 @@ Sequence< Sequence< PropertyValue > > SvtHistoryOptions_Impl::GetList( EHistoryT ...@@ -391,20 +392,37 @@ Sequence< Sequence< PropertyValue > > SvtHistoryOptions_Impl::GetList( EHistoryT
const sal_Int32 nLength = xOrderList->getElementNames().getLength(); const sal_Int32 nLength = xOrderList->getElementNames().getLength();
Sequence< Sequence< PropertyValue > > aRet(nLength); Sequence< Sequence< PropertyValue > > aRet(nLength);
sal_Int32 nCount = 0;
for(sal_Int32 nItem=0; nItem<nLength; ++nItem) for(sal_Int32 nItem=0; nItem<nLength; ++nItem)
{ {
::rtl::OUString sUrl; try
xOrderList->getByName(::rtl::OUString::valueOf(nItem)) >>= xSet; {
xSet->getPropertyValue(rtl::OUString(s_sHistoryItemRef)) >>= sUrl; ::rtl::OUString sUrl;
xOrderList->getByName(::rtl::OUString::valueOf(nItem)) >>= xSet;
xItemList->getByName(sUrl) >>= xSet; xSet->getPropertyValue(rtl::OUString(s_sHistoryItemRef)) >>= sUrl;
seqProperties[s_nOffsetURL ].Value <<= sUrl;
xSet->getPropertyValue(rtl::OUString(s_sFilter)) >>= seqProperties[s_nOffsetFilter ].Value; xItemList->getByName(sUrl) >>= xSet;
xSet->getPropertyValue(rtl::OUString(s_sTitle)) >>= seqProperties[s_nOffsetTitle ].Value; seqProperties[s_nOffsetURL ].Value <<= sUrl;
xSet->getPropertyValue(rtl::OUString(s_sPassword)) >>= seqProperties[s_nOffsetPassword ].Value; xSet->getPropertyValue(rtl::OUString(s_sFilter)) >>= seqProperties[s_nOffsetFilter ].Value;
aRet[nItem] = seqProperties; xSet->getPropertyValue(rtl::OUString(s_sTitle)) >>= seqProperties[s_nOffsetTitle ].Value;
xSet->getPropertyValue(rtl::OUString(s_sPassword)) >>= seqProperties[s_nOffsetPassword ].Value;
aRet[nCount++] = seqProperties;
}
catch(const css::uno::Exception& ex)
{
// <https://bugs.freedesktop.org/show_bug.cgi?id=46074>
// "FILEOPEN: No Recent Documents..." discusses a problem
// with corrupted /org.openoffice.Office/Histories/Histories
// configuration items; to work around that problem, simply
// ignore such corrupted individual items here, so that at
// least newly added items are successfully reported back
// from this function:
LogHelper::logIt(ex);
}
} }
assert(nCount <= nLength);
aRet.realloc(nCount);
seqReturn = aRet; seqReturn = aRet;
} }
} }
......
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