Hi, I have submitted a patch for review:
https://gerrit.libreoffice.org/3085 To pull it, you can do: git pull ssh://gerrit.libreoffice.org:29418/core refs/changes/85/3085/1 use of aState instead of m_aStates.top in popState Change-Id: I6814e48a92a1b24823c6884a151aa6a139410ff2 --- M writerfilter/source/rtftok/rtfdocumentimpl.cxx 1 file changed, 21 insertions(+), 23 deletions(-) diff --git a/writerfilter/source/rtftok/rtfdocumentimpl.cxx b/writerfilter/source/rtftok/rtfdocumentimpl.cxx index e732688..d4896ef 100644 --- a/writerfilter/source/rtftok/rtfdocumentimpl.cxx +++ b/writerfilter/source/rtftok/rtfdocumentimpl.cxx @@ -209,10 +209,10 @@ return NULL; } -static util::DateTime lcl_getDateTime(std::stack<RTFParserState>& aStates) +static util::DateTime lcl_getDateTime(RTFParserState& aState) { - return util::DateTime(0 /*100sec*/, 0 /*sec*/, aStates.top().nMinute, aStates.top().nHour, - aStates.top().nDay, aStates.top().nMonth, aStates.top().nYear); + return util::DateTime(0 /*100sec*/, 0 /*sec*/, aState.nMinute, aState.nHour, + aState.nDay, aState.nMonth, aState.nYear); } static void lcl_DestinationToMath(OUStringBuffer& rDestinationText, oox::formulaimport::XmlStreamBuilder& rMathBuffer) @@ -3821,12 +3821,12 @@ sal_Int32 nReplaces = 1; for (int i = 0; i < aOrig.getLength(); i++) { - if (std::find(m_aStates.top().aLevelNumbers.begin(), m_aStates.top().aLevelNumbers.end(), i+1) - != m_aStates.top().aLevelNumbers.end()) + if (std::find(aState.aLevelNumbers.begin(), aState.aLevelNumbers.end(), i+1) + != aState.aLevelNumbers.end()) { aBuf.append(sal_Unicode('%')); // '1.1.1' -> '%1.%2.%3', but '1.' (with '2.' prefix omitted) is %2. - aBuf.append(sal_Int32(nReplaces++ + m_aStates.top().nListLevelNum + 1 - m_aStates.top().aLevelNumbers.size())); + aBuf.append(sal_Int32(nReplaces++ + aState.nListLevelNum + 1 - aState.aLevelNumbers.size())); } else aBuf.append(aOrig.copy(i, 1)); @@ -3836,14 +3836,11 @@ } break; case DESTINATION_SHAPEPROPERTYNAME: + aState.aShape.aProperties.push_back(make_pair(m_aStates.top().aDestinationText.makeStringAndClear(), OUString())); + break; case DESTINATION_SHAPEPROPERTYVALUE: - case DESTINATION_SHAPEPROPERTY: - { - if (m_aStates.top().nDestinationState == DESTINATION_SHAPEPROPERTYNAME) - aState.aShape.aProperties.push_back(make_pair(m_aStates.top().aDestinationText.makeStringAndClear(), OUString())); - else if (m_aStates.top().nDestinationState == DESTINATION_SHAPEPROPERTYVALUE && aState.aShape.aProperties.size()) - aState.aShape.aProperties.back().second = m_aStates.top().aDestinationText.makeStringAndClear(); - } + if (aState.aShape.aProperties.size()) + aState.aShape.aProperties.back().second = m_aStates.top().aDestinationText.makeStringAndClear(); break; case DESTINATION_PICPROP: case DESTINATION_SHAPEINSTRUCTION: @@ -3878,7 +3875,7 @@ break; case DESTINATION_DATAFIELD: { - OString aStr = OUStringToOString(m_aStates.top().aDestinationText.makeStringAndClear(), m_aStates.top().nCurrentEncoding); + OString aStr = OUStringToOString(m_aStates.top().aDestinationText.makeStringAndClear(), aState.nCurrentEncoding); // decode hex dump OStringBuffer aBuf; const char *str = aStr.getStr(); @@ -3915,9 +3912,9 @@ nLength = aStr.toChar(); aStr = aStr.copy(1); OString aDefaultText = aStr.copy(0, nLength); - RTFValue::Pointer_t pNValue(new RTFValue(OStringToOUString(aName, m_aStates.top().nCurrentEncoding))); + RTFValue::Pointer_t pNValue(new RTFValue(OStringToOUString(aName, aState.nCurrentEncoding))); m_aFormfieldSprms.set(NS_ooxml::LN_CT_FFData_name, pNValue); - RTFValue::Pointer_t pDValue(new RTFValue(OStringToOUString(aDefaultText, m_aStates.top().nCurrentEncoding))); + RTFValue::Pointer_t pDValue(new RTFValue(OStringToOUString(aDefaultText, aState.nCurrentEncoding))); m_aFormfieldSprms.set(NS_ooxml::LN_CT_FFTextInput_default, pDValue); m_bFormField = false; @@ -3925,15 +3922,15 @@ break; case DESTINATION_CREATIONTIME: if (m_xDocumentProperties.is()) - m_xDocumentProperties->setCreationDate(lcl_getDateTime(m_aStates)); + m_xDocumentProperties->setCreationDate(lcl_getDateTime(aState)); break; case DESTINATION_REVISIONTIME: if (m_xDocumentProperties.is()) - m_xDocumentProperties->setModificationDate(lcl_getDateTime(m_aStates)); + m_xDocumentProperties->setModificationDate(lcl_getDateTime(aState)); break; case DESTINATION_PRINTTIME: if (m_xDocumentProperties.is()) - m_xDocumentProperties->setPrintDate(lcl_getDateTime(m_aStates)); + m_xDocumentProperties->setPrintDate(lcl_getDateTime(aState)); break; case DESTINATION_AUTHOR: if (m_xDocumentProperties.is()) @@ -3958,7 +3955,7 @@ case DESTINATION_OPERATOR: case DESTINATION_COMPANY: { - OUString aName = m_aStates.top().nDestinationState == DESTINATION_OPERATOR ? OUString("Operator") : OUString("Company"); + OUString aName = aState.nDestinationState == DESTINATION_OPERATOR ? OUString("Operator") : OUString("Company"); if (m_xDocumentProperties.is()) { uno::Reference<beans::XPropertyContainer> xUserDefinedProperties = m_xDocumentProperties->getUserDefinedProperties(); @@ -4052,7 +4049,7 @@ case DESTINATION_ANNOTATIONDATE: { OUString aStr(OStringToOUString(lcl_DTTM22OString(m_aStates.top().aDestinationText.makeStringAndClear().toInt32()), - m_aStates.top().nCurrentEncoding)); + aState.nCurrentEncoding)); RTFValue::Pointer_t pValue(new RTFValue(aStr)); RTFSprms aAnnAttributes; aAnnAttributes.set(NS_ooxml::LN_CT_TrackChange_date, pValue); @@ -4110,8 +4107,9 @@ } break; case DESTINATION_SHAPE: - if (m_aStates.top().aFrame.inFrame()) + if (aState.aFrame.inFrame()) { + // parBreak modify m_aStates.top() so we can't apply resetFrame directly on aState m_aStates.top().resetFrame(); parBreak(); // Save this state for later use, so we only reset frame status only for the first shape inside a frame. @@ -4344,7 +4342,7 @@ } // See if we need to end a track change - RTFValue::Pointer_t pTrackchange = m_aStates.top().aCharacterSprms.find(NS_ooxml::LN_trackchange); + RTFValue::Pointer_t pTrackchange = aState.aCharacterSprms.find(NS_ooxml::LN_trackchange); if (pTrackchange.get()) { RTFSprms aTCAttributes; -- To view, visit https://gerrit.libreoffice.org/3085 To unsubscribe, visit https://gerrit.libreoffice.org/settings Gerrit-MessageType: newchange Gerrit-Change-Id: I6814e48a92a1b24823c6884a151aa6a139410ff2 Gerrit-PatchSet: 1 Gerrit-Project: core Gerrit-Branch: master Gerrit-Owner: Maxime de Roucy <mdero...@linagora.com> _______________________________________________ LibreOffice mailing list LibreOffice@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/libreoffice