chart2/source/controller/main/ChartController.cxx | 3 - dbaccess/source/ui/dlg/paramdialog.cxx | 34 ++++++----- extensions/source/propctrlr/standardcontrol.cxx | 3 - extensions/source/propctrlr/usercontrol.hxx | 3 - include/comphelper/configurationlistener.hxx | 1 io/source/stm/omark.cxx | 39 +------------ io/source/stm/opipe.cxx | 30 ++-------- io/source/stm/streamhelper.cxx | 63 ++++++---------------- io/source/stm/streamhelper.hxx | 33 +++-------- oox/source/ole/vbaexport.cxx | 1 svx/source/gallery2/galbrws1.cxx | 6 +- svx/source/gallery2/galbrws1.hxx | 2 sw/source/ui/dbui/dbinsdlg.cxx | 5 + 13 files changed, 71 insertions(+), 152 deletions(-)
New commits: commit 1769074bd556e21e0c6ed29d9059960f998e28d1 Author: Caolán McNamara <caol...@redhat.com> Date: Fri Oct 16 21:08:57 2015 +0100 coverity#1327454 Uncaught exception and a boatload more along that vein Change-Id: Ic7d458d3b8e5c99df1995251f75d3ad57d0df967 diff --git a/io/source/stm/omark.cxx b/io/source/stm/omark.cxx index 108a9aa..646f06c 100644 --- a/io/source/stm/omark.cxx +++ b/io/source/stm/omark.cxx @@ -174,19 +174,8 @@ void OMarkableOutputStream::writeBytes(const Sequence< sal_Int8 >& aData) else { MutexGuard guard( m_mutex ); // new data must be buffered - try - { - m_pBuffer->writeAt( m_nCurrentPos , aData ); - m_nCurrentPos += aData.getLength(); - } - catch( IRingBuffer_OutOfBoundsException & ) - { - throw BufferSizeExceededException(); - } - catch( IRingBuffer_OutOfMemoryException & ) - { - throw BufferSizeExceededException(); - } + m_pBuffer->writeAt( m_nCurrentPos , aData ); + m_nCurrentPos += aData.getLength(); checkMarksAndFlush(); } } @@ -605,16 +594,7 @@ sal_Int32 OMarkableInputStream::readBytes(Sequence< sal_Int8 >& aData, sal_Int32 OSL_ASSERT( aData.getLength() == nRead ); - try - { - m_pBuffer->writeAt( m_pBuffer->getSize() , aData ); - } - catch( IRingBuffer_OutOfMemoryException & ) { - throw BufferSizeExceededException(); - } - catch( IRingBuffer_OutOfBoundsException & ) { - throw BufferSizeExceededException(); - } + m_pBuffer->writeAt( m_pBuffer->getSize() , aData ); if( nRead < nToRead ) { nBytesToRead = nBytesToRead - (nToRead-nRead); @@ -668,18 +648,7 @@ sal_Int32 OMarkableInputStream::readSomeBytes(Sequence< sal_Int8 >& aData, sal_I if( nRead ) { aData.realloc( nRead ); - try - { - m_pBuffer->writeAt( m_pBuffer->getSize() , aData ); - } - catch( IRingBuffer_OutOfMemoryException & ) - { - throw BufferSizeExceededException(); - } - catch( IRingBuffer_OutOfBoundsException & ) - { - throw BufferSizeExceededException(); - } + m_pBuffer->writeAt( m_pBuffer->getSize() , aData ); } nBytesRead = Min( nMaxBytesToRead , nInBuffer + nRead ); diff --git a/io/source/stm/opipe.cxx b/io/source/stm/opipe.cxx index ad59a09..494619c 100644 --- a/io/source/stm/opipe.cxx +++ b/io/source/stm/opipe.cxx @@ -303,33 +303,17 @@ void OPipeImpl::writeBytes(const Sequence< sal_Int8 >& aData) } // adjust buffersize if necessary - - try + if( m_nBytesToSkip ) { - if( m_nBytesToSkip ) - { - Sequence< sal_Int8 > seqCopy( nLen - m_nBytesToSkip ); - memcpy( seqCopy.getArray() , &( aData.getConstArray()[m_nBytesToSkip] ) , nLen-m_nBytesToSkip ); - m_pFIFO->write( seqCopy ); - } - else - { - m_pFIFO->write( aData ); - } - m_nBytesToSkip = 0; + Sequence< sal_Int8 > seqCopy( nLen - m_nBytesToSkip ); + memcpy( seqCopy.getArray() , &( aData.getConstArray()[m_nBytesToSkip] ) , nLen-m_nBytesToSkip ); + m_pFIFO->write( seqCopy ); } - catch ( I_FIFO_OutOfBoundsException & ) + else { - throw BufferSizeExceededException( - "Pipe::writeBytes BufferSizeExceededException", - *this ); - } - catch ( I_FIFO_OutOfMemoryException & ) - { - throw BufferSizeExceededException( - "Pipe::writeBytes BufferSizeExceededException", - *this ); + m_pFIFO->write( aData ); } + m_nBytesToSkip = 0; // readBytes may check again if enough bytes are available m_conditionBytesAvail.set(); diff --git a/io/source/stm/streamhelper.cxx b/io/source/stm/streamhelper.cxx index 516d4e5..3e789ac 100644 --- a/io/source/stm/streamhelper.cxx +++ b/io/source/stm/streamhelper.cxx @@ -33,50 +33,22 @@ using namespace ::com::sun::star::uno; namespace io_stm { void MemFIFO::write( const Sequence< sal_Int8 > &seq ) - throw ( I_FIFO_OutOfMemoryException, - I_FIFO_OutOfBoundsException ) + throw ( css::io::BufferSizeExceededException ) { - try - { - writeAt(getSize(), seq ); - } - catch( IRingBuffer_OutOfMemoryException & ) - { - throw I_FIFO_OutOfMemoryException(); - } - catch( IRingBuffer_OutOfBoundsException & ) - { - throw I_FIFO_OutOfBoundsException(); - } + writeAt(getSize(), seq); } -void MemFIFO::read( Sequence<sal_Int8> &seq , sal_Int32 nBufferLen ) throw (I_FIFO_OutOfBoundsException) +void MemFIFO::read( Sequence<sal_Int8> &seq , sal_Int32 nBufferLen ) throw (css::io::BufferSizeExceededException) { - try - { - readAt(0, seq , nBufferLen); - forgetFromStart( nBufferLen ); - } - catch ( IRingBuffer_OutOfBoundsException & ) - { - throw I_FIFO_OutOfBoundsException(); - } + readAt(0, seq , nBufferLen); + forgetFromStart( nBufferLen ); } -void MemFIFO::skip( sal_Int32 nBytesToSkip ) throw ( I_FIFO_OutOfBoundsException ) +void MemFIFO::skip( sal_Int32 nBytesToSkip ) throw ( css::io::BufferSizeExceededException ) { - try - { - forgetFromStart( nBytesToSkip ); - } - catch( IRingBuffer_OutOfBoundsException & ) - { - throw I_FIFO_OutOfBoundsException(); - } + forgetFromStart( nBytesToSkip ); } - - MemRingBuffer::MemRingBuffer() { m_nBufferLen = 0; @@ -92,7 +64,7 @@ MemRingBuffer::~MemRingBuffer() } } -void MemRingBuffer::resizeBuffer( sal_Int32 nMinSize ) throw( IRingBuffer_OutOfMemoryException) +void MemRingBuffer::resizeBuffer( sal_Int32 nMinSize ) throw(css::io::BufferSizeExceededException) { sal_Int32 nNewLen = 1; @@ -108,7 +80,8 @@ void MemRingBuffer::resizeBuffer( sal_Int32 nMinSize ) throw( IRingBuffer_OutOfM if( nNewLen != m_nBufferLen ) { m_p = static_cast<sal_Int8 *>(rtl_reallocateMemory( m_p , nNewLen )); if( !m_p ) { - throw IRingBuffer_OutOfMemoryException(); + throw css::io::BufferSizeExceededException( + "MemRingBuffer::resizeBuffer BufferSizeExceededException"); } if( m_nStart + m_nOccupiedBuffer > m_nBufferLen ) { @@ -121,10 +94,11 @@ void MemRingBuffer::resizeBuffer( sal_Int32 nMinSize ) throw( IRingBuffer_OutOfM void MemRingBuffer::readAt( sal_Int32 nPos, Sequence<sal_Int8> &seq , sal_Int32 nBytesToRead ) const - throw(IRingBuffer_OutOfBoundsException) + throw(css::io::BufferSizeExceededException) { if( nPos + nBytesToRead > m_nOccupiedBuffer ) { - throw IRingBuffer_OutOfBoundsException(); + throw css::io::BufferSizeExceededException( + "MemRingBuffer::readAt BufferSizeExceededException"); } sal_Int32 nStartReadingPos = nPos + m_nStart; @@ -146,15 +120,15 @@ void MemRingBuffer::readAt( sal_Int32 nPos, Sequence<sal_Int8> &seq , sal_Int32 void MemRingBuffer::writeAt( sal_Int32 nPos, const Sequence<sal_Int8> &seq ) - throw (IRingBuffer_OutOfBoundsException, - IRingBuffer_OutOfMemoryException ) + throw (css::io::BufferSizeExceededException) { checkInvariants(); sal_Int32 nLen = seq.getLength(); if( nPos < 0 || nPos > std::numeric_limits< sal_Int32 >::max() - nLen ) { - throw IRingBuffer_OutOfBoundsException(); + throw css::io::BufferSizeExceededException( + "MemRingBuffer::writeAt BufferSizeExceededException"); } if( nPos + nLen - m_nOccupiedBuffer > 0 ) { @@ -187,11 +161,12 @@ sal_Int32 MemRingBuffer::getSize() const throw() return m_nOccupiedBuffer; } -void MemRingBuffer::forgetFromStart( sal_Int32 nBytesToForget ) throw (IRingBuffer_OutOfBoundsException) +void MemRingBuffer::forgetFromStart( sal_Int32 nBytesToForget ) throw (css::io::BufferSizeExceededException) { checkInvariants(); if( nBytesToForget > m_nOccupiedBuffer ) { - throw IRingBuffer_OutOfBoundsException(); + throw css::io::BufferSizeExceededException( + "MemRingBuffer::forgetFromStart BufferSizeExceededException"); } m_nStart += nBytesToForget; if( m_nStart >= m_nBufferLen ) { diff --git a/io/source/stm/streamhelper.hxx b/io/source/stm/streamhelper.hxx index 463c185..fd00bcc 100644 --- a/io/source/stm/streamhelper.hxx +++ b/io/source/stm/streamhelper.hxx @@ -20,6 +20,8 @@ #ifndef INCLUDED_IO_SOURCE_STM_STREAMHELPER_HXX #define INCLUDED_IO_SOURCE_STM_STREAMHELPER_HXX +#include <com/sun/star/io/BufferSizeExceededException.hpp> + // Save NDEBUG state #ifdef NDEBUG #define STREAMHELPER_HXX_HAD_NDEBUG @@ -37,14 +39,6 @@ namespace io_stm { -class IRingBuffer_OutOfBoundsException : - public Exception -{}; - -class IRingBuffer_OutOfMemoryException : - public Exception -{}; - class MemRingBuffer { public: @@ -56,18 +50,17 @@ public: * data is written beyond end. ***/ void writeAt( sal_Int32 nPos, const Sequence<sal_Int8> &) - throw( IRingBuffer_OutOfMemoryException, - IRingBuffer_OutOfBoundsException ); + throw(css::io::BufferSizeExceededException); void readAt( sal_Int32 nPos, Sequence<sal_Int8> & , sal_Int32 nBytesToRead ) const - throw( IRingBuffer_OutOfBoundsException ); + throw(css::io::BufferSizeExceededException); sal_Int32 getSize() const throw(); - void forgetFromStart( sal_Int32 nBytesToForget ) throw(IRingBuffer_OutOfBoundsException); + void forgetFromStart(sal_Int32 nBytesToForget) throw(css::io::BufferSizeExceededException); virtual void shrink() throw(); private: - void resizeBuffer( sal_Int32 nMinSize ) throw( IRingBuffer_OutOfMemoryException ); + void resizeBuffer(sal_Int32 nMinSize) throw(css::io::BufferSizeExceededException); inline void checkInvariants() { assert( m_nBufferLen >= 0 ); assert( m_nOccupiedBuffer >= 0 ); @@ -84,24 +77,16 @@ private: }; -class I_FIFO_OutOfBoundsException : - public Exception -{}; - -class I_FIFO_OutOfMemoryException : - public Exception -{}; - class MemFIFO : private MemRingBuffer { public: void write( const Sequence<sal_Int8> &) - throw( I_FIFO_OutOfMemoryException, I_FIFO_OutOfBoundsException ); + throw( css::io::BufferSizeExceededException ); void read( Sequence<sal_Int8> & , sal_Int32 nBytesToRead ) - throw( I_FIFO_OutOfBoundsException ); + throw( css::io::BufferSizeExceededException ); void skip( sal_Int32 nBytesToSkip ) - throw( I_FIFO_OutOfBoundsException ); + throw( css::io::BufferSizeExceededException ); sal_Int32 getSize() const throw() { return MemRingBuffer::getSize(); } virtual void shrink() throw() override commit 6806a0260d76d9c8abdb41aa07d90fc264520f7c Author: Caolán McNamara <caol...@redhat.com> Date: Fri Oct 16 20:47:07 2015 +0100 coverity#1327442 Division or modulo by zero Change-Id: I4046fa491cb59c93665a5584544ab1fbda7fa733 diff --git a/sw/source/ui/dbui/dbinsdlg.cxx b/sw/source/ui/dbui/dbinsdlg.cxx index 0a48c57..c9157bc 100644 --- a/sw/source/ui/dbui/dbinsdlg.cxx +++ b/sw/source/ui/dbui/dbinsdlg.cxx @@ -734,11 +734,12 @@ IMPL_LINK_TYPED( SwInsertDBColAutoPilot, TableFormatHdl, Button*, pButton, void ::GetHtmlMode( pView->GetDocShell() ))); } - if( m_pLbTableCol->GetEntryCount() != pRep->GetAllColCount() ) + sal_Int32 nCols = m_pLbTableCol->GetEntryCount(); + if (nCols != pRep->GetAllColCount() && nCols > 0) { // Number of columns has changed: then the TabCols have to be adjusted long nWidth = pRep->GetWidth(); - const sal_Int32 nCols = m_pLbTableCol->GetEntryCount() - 1; + --nCols; SwTabCols aTabCols( nCols ); aTabCols.SetRight( nWidth ); aTabCols.SetRightMax( nWidth ); commit e1bc0f42fa5d474ba153672ee33f2ddc004dd15b Author: Caolán McNamara <caol...@redhat.com> Date: Fri Oct 16 20:44:31 2015 +0100 coverity#1327443 Division or modulo by zero Change-Id: Iefddcc2d66e77e3698dec9930898f63e0b7902f6 diff --git a/dbaccess/source/ui/dlg/paramdialog.cxx b/dbaccess/source/ui/dlg/paramdialog.cxx index ef8f0cc..7a3769d 100644 --- a/dbaccess/source/ui/dlg/paramdialog.cxx +++ b/dbaccess/source/ui/dlg/paramdialog.cxx @@ -263,25 +263,27 @@ namespace dbaui } else if (m_pTravelNext == pButton) { - sal_Int32 nCurrent = m_pAllParams->GetSelectEntryPos(); - sal_Int32 nCount = m_pAllParams->GetEntryCount(); - OSL_ENSURE(static_cast<size_t>(nCount) == m_aVisitedParams.size(), "OParameterDialog::OnButtonClicked : inconsistent lists !"); + if (sal_Int32 nCount = m_pAllParams->GetEntryCount()) + { + sal_Int32 nCurrent = m_pAllParams->GetSelectEntryPos(); + OSL_ENSURE(static_cast<size_t>(nCount) == m_aVisitedParams.size(), "OParameterDialog::OnButtonClicked : inconsistent lists !"); - // search the next entry in list we haven't visited yet - sal_Int32 nNext = (nCurrent + 1) % nCount; - while ((nNext != nCurrent) && ( m_aVisitedParams[nNext] & EF_VISITED )) - nNext = (nNext + 1) % nCount; + // search the next entry in list we haven't visited yet + sal_Int32 nNext = (nCurrent + 1) % nCount; + while ((nNext != nCurrent) && ( m_aVisitedParams[nNext] & EF_VISITED )) + nNext = (nNext + 1) % nCount; - if ( m_aVisitedParams[nNext] & EF_VISITED ) - // there is no such "not visited yet" entry -> simply take the next one - nNext = (nCurrent + 1) % nCount; + if ( m_aVisitedParams[nNext] & EF_VISITED ) + // there is no such "not visited yet" entry -> simply take the next one + nNext = (nCurrent + 1) % nCount; - m_pAllParams->SelectEntryPos(nNext); - OnEntrySelected(); - m_bNeedErrorOnCurrent = true; - // we're are out of the complex web :) of direct and indirect calls to OnValueLoseFocus now, - // so the next time it is called we need an error message, again .... - // (TODO : there surely are better solutions for this ...) + m_pAllParams->SelectEntryPos(nNext); + OnEntrySelected(); + m_bNeedErrorOnCurrent = true; + // we're are out of the complex web :) of direct and indirect calls to OnValueLoseFocus now, + // so the next time it is called we need an error message, again .... + // (TODO : there surely are better solutions for this ...) + } } } commit e8d848543ee6b7e4696381ececc476d3522b3614 Author: Caolán McNamara <caol...@redhat.com> Date: Fri Oct 16 20:39:34 2015 +0100 coverity#1327445 Unchecked dynamic_cast and coverity#1327444 Unchecked dynamic_cast Change-Id: I459d588db4a3dd6591b81babb3586fe97ab96c63 diff --git a/svx/source/gallery2/galbrws1.cxx b/svx/source/gallery2/galbrws1.cxx index b5245fb..f83c6f3 100644 --- a/svx/source/gallery2/galbrws1.cxx +++ b/svx/source/gallery2/galbrws1.cxx @@ -284,7 +284,7 @@ void GalleryBrowser1::ImplGalleryThemeProperties( const OUString & rThemeName, b } } -void GalleryBrowser1::ImplEndGalleryThemeProperties( VclAbstractDialog2* pDialog, bool bCreateNew ) +void GalleryBrowser1::ImplEndGalleryThemeProperties(Dialog* pDialog, bool bCreateNew) { long nRet = pDialog->GetResult(); @@ -329,12 +329,12 @@ void GalleryBrowser1::ImplEndGalleryThemeProperties( VclAbstractDialog2* pDialog IMPL_LINK_TYPED( GalleryBrowser1, EndNewThemePropertiesDlgHdl, Dialog&, rDialog, void ) { - ImplEndGalleryThemeProperties( dynamic_cast<VclAbstractDialog2*>(&rDialog), true ); + ImplEndGalleryThemeProperties(&rDialog, true); } IMPL_LINK_TYPED( GalleryBrowser1, EndThemePropertiesDlgHdl, Dialog&, rDialog, void ) { - ImplEndGalleryThemeProperties( dynamic_cast<VclAbstractDialog2*>(&rDialog), false ); + ImplEndGalleryThemeProperties(&rDialog, false); } IMPL_LINK_TYPED( GalleryBrowser1, DestroyThemePropertiesDlgHdl, void*, p, void ) diff --git a/svx/source/gallery2/galbrws1.hxx b/svx/source/gallery2/galbrws1.hxx index c3c3f74..595b2e7 100644 --- a/svx/source/gallery2/galbrws1.hxx +++ b/svx/source/gallery2/galbrws1.hxx @@ -100,7 +100,7 @@ private: void ImplGetExecuteVector(::std::vector< sal_uInt16 >& o_aExec); void ImplExecute( sal_uInt16 nId ); void ImplGalleryThemeProperties( const OUString & rThemeName, bool bCreateNew ); - void ImplEndGalleryThemeProperties( VclAbstractDialog2* pDialog, bool bCreateNew ); + void ImplEndGalleryThemeProperties(Dialog* pDialog, bool bCreateNew); // Control virtual void Resize() override; commit 9facb8271d9e87b33e7280f400d19bea3c326eea Author: Caolán McNamara <caol...@redhat.com> Date: Fri Oct 16 20:37:55 2015 +0100 coverity#1327446 Unchecked dynamic_cast Change-Id: Ib409b7fe4244b89f8767b20adcfae060f121b2f2 diff --git a/chart2/source/controller/main/ChartController.cxx b/chart2/source/controller/main/ChartController.cxx index d6674cf..72fea5f 100644 --- a/chart2/source/controller/main/ChartController.cxx +++ b/chart2/source/controller/main/ChartController.cxx @@ -814,9 +814,8 @@ void SAL_CALL ChartController::dispose() if (getModel().is()) { uno::Reference<ui::XSidebar> xSidebar = getSidebarFromModel(getModel()); - if (xSidebar.is()) + if (sfx2::sidebar::SidebarController* pSidebar = dynamic_cast<sfx2::sidebar::SidebarController*>(xSidebar.get())) { - sfx2::sidebar::SidebarController* pSidebar = dynamic_cast<sfx2::sidebar::SidebarController*>(xSidebar.get()); sfx2::sidebar::SidebarController::unregisterSidebarForFrame(pSidebar, this); } } commit ffbb27d0d7bfd4fa2b297959385e9b3cee0b30da Author: Caolán McNamara <caol...@redhat.com> Date: Fri Oct 16 20:31:27 2015 +0100 coverity#1327455 Uninitialized pointer field Change-Id: Icc7405e5b68725e28447a1f2c1cbed2fbe6b8049 diff --git a/extensions/source/propctrlr/usercontrol.hxx b/extensions/source/propctrlr/usercontrol.hxx index 3171dee..2c21bf7 100644 --- a/extensions/source/propctrlr/usercontrol.hxx +++ b/extensions/source/propctrlr/usercontrol.hxx @@ -39,7 +39,8 @@ namespace pcr { public: NumberFormatSampleField( vcl::Window* _pParent, WinBits _nStyle ) - :FormattedField( _pParent, _nStyle ) + : FormattedField(_pParent, _nStyle) + , m_pHelper(nullptr) { } commit fdf9fa4fd2e3b64e2392b6743b7ff76f445b0880 Author: Caolán McNamara <caol...@redhat.com> Date: Fri Oct 16 20:30:18 2015 +0100 coverity#1327456 Uninitialized pointer field Change-Id: I0d116989bdbda07995cca1c8062ea5b0c4292b28 diff --git a/extensions/source/propctrlr/standardcontrol.cxx b/extensions/source/propctrlr/standardcontrol.cxx index 6d62652..3910f39 100644 --- a/extensions/source/propctrlr/standardcontrol.cxx +++ b/extensions/source/propctrlr/standardcontrol.cxx @@ -1034,7 +1034,8 @@ namespace pcr ,m_pFloatingEdit( NULL ) ,m_pDropdownButton( NULL ) ,m_nOperationMode( eStringList ) - ,m_bDropdown( false ) + ,m_bDropdown(false) + ,m_pHelper(nullptr) { SetCompoundControl( true ); commit f03c0930e286fb6d608ce65f8eaaa5053f4ae924 Author: Caolán McNamara <caol...@redhat.com> Date: Fri Oct 16 20:29:14 2015 +0100 coverity#1327457 Uninitialized scalar field Change-Id: Idbad4c6d09fd2eb9a044d8193fc7101de63c02f5 diff --git a/oox/source/ole/vbaexport.cxx b/oox/source/ole/vbaexport.cxx index 6252165..d56d974 100644 --- a/oox/source/ole/vbaexport.cxx +++ b/oox/source/ole/vbaexport.cxx @@ -379,6 +379,7 @@ VBAEncryption::VBAEncryption(const sal_uInt8* pData, const sal_uInt16 length, Sv :mpData(pData) ,mnLength(length) ,mrEncryptedData(rEncryptedData) + ,mnUnencryptedByte1(0) ,mnEncryptedByte1(0) ,mnEncryptedByte2(0) ,mnVersion(2) commit 25405f5ef593d11d56010006f883582b042034da Author: Caolán McNamara <caol...@redhat.com> Date: Fri Oct 16 20:27:40 2015 +0100 coverity#1327458 Uninitialized scalar field Change-Id: Iaa51be64ad0ed96e8ce805c7cf26e8a48215b2d1 diff --git a/include/comphelper/configurationlistener.hxx b/include/comphelper/configurationlistener.hxx index 80194ae..9641208 100644 --- a/include/comphelper/configurationlistener.hxx +++ b/include/comphelper/configurationlistener.hxx @@ -100,6 +100,7 @@ public: }; template< typename uno_type > ConfigurationListenerProperty< uno_type >::ConfigurationListenerProperty(const rtl::Reference< ConfigurationListener > &xListener, const OUString &rProp ) + : maValue() { maName = rProp; mxListener = xListener;
_______________________________________________ Libreoffice-commits mailing list libreoffice-comm...@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/libreoffice-commits