accessibility/inc/accessibility/extended/AccessibleGridControl.hxx | 2 - accessibility/source/extended/AccessibleGridControl.cxx | 15 ++++++---- sax/source/tools/converter.cxx | 10 ++++-- svx/source/accessibility/ChildrenManagerImpl.cxx | 2 - sw/source/core/layout/atrfrm.cxx | 6 +++- sw/source/filter/xml/xmlexpit.cxx | 2 - xmloff/source/style/xmlbahdl.cxx | 5 ++- xmloff/source/style/xmlbahdl.hxx | 4 +- 8 files changed, 29 insertions(+), 17 deletions(-)
New commits: commit 3a5f11f6dd086efdb40e1e75e6588b4c62881918 Author: Michael Stahl <[email protected]> Date: Tue Dec 17 23:44:38 2013 +0100 fdo#72452: ODF import/export: fix handling of style:page-number Class XMLNumberWithAutoInsteadZeroPropHdl (which appears to be used only for this attribute) needs to be adapted to the change that "PageNumberOffset" value 0 is no longer invalid; use "void" value for invalid instead, which appears more appropriate anyway. Unfortunately the type of style:page-number is positiveInteger so writing 0 would be invalid; write "auto" instead for now. Change-Id: I9621ea201fd928087b863c562607c3d77a3b0269 (cherry picked from commit 22355042a6fc7aecf3caab69b3fa3be1430b697f) diff --git a/sw/source/core/layout/atrfrm.cxx b/sw/source/core/layout/atrfrm.cxx index 4f482c5..b06cea4 100644 --- a/sw/source/core/layout/atrfrm.cxx +++ b/sw/source/core/layout/atrfrm.cxx @@ -710,7 +710,11 @@ bool SwFmtPageDesc::PutValue( const uno::Any& rVal, sal_uInt8 nMemberId ) case MID_PAGEDESC_PAGENUMOFFSET: { sal_Int16 nOffset = 0; - if(rVal >>= nOffset) + if (!rVal.hasValue()) + { + SetNumOffset(boost::none); + } + else if (rVal >>= nOffset) SetNumOffset( nOffset ); else bRet = false; diff --git a/sw/source/filter/xml/xmlexpit.cxx b/sw/source/filter/xml/xmlexpit.cxx index abe355d..b1e5182 100644 --- a/sw/source/filter/xml/xmlexpit.cxx +++ b/sw/source/filter/xml/xmlexpit.cxx @@ -1005,7 +1005,7 @@ bool SvXMLExportItemMapper::QueryXMLValue( if( MID_PAGEDESC_PAGENUMOFFSET==nMemberId ) { ::boost::optional<sal_uInt16> oNumOffset = pPageDesc->GetNumOffset(); - if (oNumOffset) + if (oNumOffset && oNumOffset.get() > 0) { // #i114163# positiveInteger only! sal_Int32 const number(oNumOffset.get()); diff --git a/xmloff/source/style/xmlbahdl.cxx b/xmloff/source/style/xmlbahdl.cxx index 3397e47..0a797e5 100644 --- a/xmloff/source/style/xmlbahdl.cxx +++ b/xmloff/source/style/xmlbahdl.cxx @@ -879,7 +879,7 @@ bool XMLNumberWithAutoInsteadZeroPropHdl::importXML( lcl_xmloff_setAny( rValue, nValue, 2 ); else if( rStrImpValue == GetXMLToken( XML_AUTO ) ) { - rValue <<= (sal_Int16)nValue; + rValue.clear(); // void bRet = true; } return bRet; @@ -891,7 +891,8 @@ bool XMLNumberWithAutoInsteadZeroPropHdl::exportXML( OUString& rStrExpValue, con sal_Int32 nValue = 0; lcl_xmloff_getAny( rValue, nValue, 2 ); - if( 0 == nValue ) + // FIXME: 0 is not a valid value - write "auto" instead + if (0 == nValue || !rValue.hasValue()) rStrExpValue = GetXMLToken( XML_AUTO ); else { diff --git a/xmloff/source/style/xmlbahdl.hxx b/xmloff/source/style/xmlbahdl.hxx index 58c6dc1..8b57ccb 100644 --- a/xmloff/source/style/xmlbahdl.hxx +++ b/xmloff/source/style/xmlbahdl.hxx @@ -306,8 +306,8 @@ public: /** PropertyHandler for the XML-data-type: XML_TYPE_NUMBER16_AUTO - Reads/writes numeric properties with special handling for the value zero - (i.e., a value 0 property will be written as "auto") + Reads/writes numeric properties with special handling for "void" value + (i.e., void property will be written as "auto") */ class XMLNumberWithAutoInsteadZeroPropHdl : public XMLNumberWithoutZeroPropHdl { commit b233b5f754026600a0f9712538291eaaa48d5884 Author: Michael Stahl <[email protected]> Date: Tue Dec 17 17:29:49 2013 +0100 sax: avoid usage of double for parsing nanoseconds here too Change-Id: Iddf93a116cb333db6465a915dae692c33a60241a (cherry picked from commit 64575a5b91b0fae6283b9ad8b1356e76caa34b45) diff --git a/sax/source/tools/converter.cxx b/sax/source/tools/converter.cxx index 02131ed..4e61f27 100644 --- a/sax/source/tools/converter.cxx +++ b/sax/source/tools/converter.cxx @@ -1645,9 +1645,13 @@ static bool lcl_parseDateTime( } if (bSuccess) { - const sal_Int32 nDigits = std::min<sal_Int32>(nPos - nStart, 9); - OSL_ENSURE(nDigits > 0, "bad code monkey"); - nNanoSeconds=static_cast<double>(nTemp)*(1000000000.0/pow(10.0,nDigits)); + sal_Int32 nDigits = std::min<sal_Int32>(nPos - nStart, 9); + assert(nDigits > 0); + for (; nDigits < 9; ++nDigits) + { + nTemp *= 10; + } + nNanoSeconds = nTemp; } } commit 20463fb3e58cb0264b311b280e623a9e1937aa43 Author: Michael Stahl <[email protected]> Date: Tue Dec 17 11:19:21 2013 +0100 ChildrenManagerImpl::AddShape: do not use member after releasing mutex This crashed here once during some JunitTest with an rDescriptor that did not match maVisibleChildren.back(). [The mrContext member used here is const so shouldn't cause problems.] Change-Id: I31e54b166badef6472127c64f0a4f49c51c73b30 (cherry picked from commit ebb6c4407da2f8e913f1520b61a36ca3a4b54a7e) diff --git a/svx/source/accessibility/ChildrenManagerImpl.cxx b/svx/source/accessibility/ChildrenManagerImpl.cxx index ed9dc7c..6226944 100644 --- a/svx/source/accessibility/ChildrenManagerImpl.cxx +++ b/svx/source/accessibility/ChildrenManagerImpl.cxx @@ -458,7 +458,7 @@ void ChildrenManagerImpl::AddShape (const Reference<drawing::XShape>& rxShape) AccessibleEventId::CHILD, aNewShape, uno::Any()); - RegisterAsDisposeListener (rDescriptor.mxShape); + RegisterAsDisposeListener(rxShape); } } } commit c4b4058b6b3a747b96f72ab44560da11726e4468 Author: Michael Stahl <[email protected]> Date: Mon Dec 16 16:09:19 2013 +0100 accessibility: don't crash if the TableControl is dead AccessibleGridControlAccess: clear the m_pTable member in dispose() so it is no longer accessed later. Change-Id: I490c84ce1bee55c9c69eb29b81ddfbe808301797 (cherry picked from commit 449e0c9c7378ba32039bd5934c26011d682a8a91) diff --git a/accessibility/inc/accessibility/extended/AccessibleGridControl.hxx b/accessibility/inc/accessibility/extended/AccessibleGridControl.hxx index e92e495..eb3be36 100644 --- a/accessibility/inc/accessibility/extended/AccessibleGridControl.hxx +++ b/accessibility/inc/accessibility/extended/AccessibleGridControl.hxx @@ -196,7 +196,7 @@ private: ::osl::Mutex m_aMutex; ::com::sun::star::uno::Reference< ::com::sun::star::accessibility::XAccessible > m_xParent; - ::svt::table::IAccessibleTable& m_rTable; + ::svt::table::IAccessibleTable * m_pTable; ::com::sun::star::uno::Reference< ::com::sun::star::accessibility::XAccessibleContext > m_xContext; diff --git a/accessibility/source/extended/AccessibleGridControl.cxx b/accessibility/source/extended/AccessibleGridControl.cxx index df7b8a0..fcd8dbc 100644 --- a/accessibility/source/extended/AccessibleGridControl.cxx +++ b/accessibility/source/extended/AccessibleGridControl.cxx @@ -407,10 +407,11 @@ void AccessibleGridControl::commitTableEvent(sal_Int16 _nEventId,const Any& _rNe // ============================================================================ // ----------------------------------------------------------------------------- -AccessibleGridControlAccess::AccessibleGridControlAccess( const Reference< XAccessible >& _rxParent, IAccessibleTable& _rTable ) - :m_xParent( _rxParent ) - ,m_rTable( _rTable ) - ,m_pContext( NULL ) +AccessibleGridControlAccess::AccessibleGridControlAccess( + const Reference< XAccessible >& rxParent, IAccessibleTable& rTable ) + : m_xParent( rxParent ) + , m_pTable( & rTable ) + , m_pContext( 0 ) { } @@ -424,6 +425,7 @@ void AccessibleGridControlAccess::dispose() { ::osl::MutexGuard aGuard( m_aMutex ); + m_pTable = 0; m_pContext = NULL; ::comphelper::disposeComponent( m_xContext ); } @@ -441,8 +443,9 @@ Reference< XAccessibleContext > SAL_CALL AccessibleGridControlAccess::getAccessi if ( m_pContext && !m_pContext->isAlive() ) m_xContext = m_pContext = NULL; - if ( !m_xContext.is() ) - m_xContext = m_pContext = new AccessibleGridControl( m_xParent, this, m_rTable ); + if (!m_xContext.is() && m_pTable) + m_xContext = m_pContext = + new AccessibleGridControl(m_xParent, this, *m_pTable); return m_xContext; } _______________________________________________ Libreoffice-commits mailing list [email protected] http://lists.freedesktop.org/mailman/listinfo/libreoffice-commits
