diff options
author | Caolán McNamara <caolanm@redhat.com> | 2018-03-27 12:08:15 +0100 |
---|---|---|
committer | Andras Timar <andras.timar@collabora.com> | 2018-04-12 10:54:34 +0200 |
commit | 3b4b5b3ffaa03919a66aef2ec84dfa6d3267b4e1 (patch) | |
tree | 00795fe5b0a0d2e6cb4fecba618da55a7ffb479b | |
parent | c483ed87ec89e17aaebbae0a99c0246be374c1c2 (diff) |
Resolves: tdf#116540 Revert "ofz infinite loop"
This reverts commit e4551b905e12aa92b7509d9b994bfae5dec3d8e0.
Change-Id: I95634dd166c51586b5da47b996993a098823ca32
Reviewed-on: https://gerrit.libreoffice.org/51942
Tested-by: Jenkins <ci@libreoffice.org>
Reviewed-by: Miklos Vajna <vmiklos@collabora.co.uk>
(cherry picked from commit 35f5f4c1537eadab85cddde5f9fd47a7421ebf3d)
-rw-r--r-- | editeng/source/rtf/svxrtf.cxx | 6 | ||||
-rw-r--r-- | include/svtools/svparser.hxx | 1 | ||||
-rw-r--r-- | svtools/source/svrtf/parrtf.cxx | 8 | ||||
-rw-r--r-- | svtools/source/svrtf/svparser.cxx | 5 |
4 files changed, 2 insertions, 18 deletions
diff --git a/editeng/source/rtf/svxrtf.cxx b/editeng/source/rtf/svxrtf.cxx index b62940dfc8b3..9a68c79a296c 100644 --- a/editeng/source/rtf/svxrtf.cxx +++ b/editeng/source/rtf/svxrtf.cxx @@ -295,11 +295,8 @@ void SvxRTFParser::ReadStyleTable() bIsInReadStyleTab = true; bChkStyleAttr = false; // Do not check Attribute against the Styles - bool bLooping = false; - - while (_nOpenBrakets && IsParserWorking() && !bLooping) + while( _nOpenBrakets && IsParserWorking() ) { - auto nCurrentTokenIndex = m_nTokenIndex; int nToken = GetNextToken(); switch( nToken ) { @@ -382,7 +379,6 @@ void SvxRTFParser::ReadStyleTable() } break; } - bLooping = nCurrentTokenIndex == m_nTokenIndex; } pStyle.reset(); // Delete the Last Style SkipToken(); // the closing brace is evaluated "above" diff --git a/include/svtools/svparser.hxx b/include/svtools/svparser.hxx index 2d3eaeeaf254..5ab0df9fca01 100644 --- a/include/svtools/svparser.hxx +++ b/include/svtools/svparser.hxx @@ -54,7 +54,6 @@ protected: sal_uLong nlLinePos; // current column number std::unique_ptr<SvParser_Impl<T>> pImplData; // internal data - long m_nTokenIndex; // current token index to detect loops for seeking backwards long nTokenValue; // additional value (RTF) bool bTokenHasValue; // indicates whether nTokenValue is valid SvParserState eState; // status also in derived classes diff --git a/svtools/source/svrtf/parrtf.cxx b/svtools/source/svrtf/parrtf.cxx index 52e350f52442..53bb4c7c8d32 100644 --- a/svtools/source/svrtf/parrtf.cxx +++ b/svtools/source/svrtf/parrtf.cxx @@ -602,12 +602,8 @@ void SvRTFParser::Continue( int nToken ) if( !nToken ) nToken = GetNextToken(); - bool bLooping = false; - - while (IsParserWorking() && !bLooping) + while( IsParserWorking() ) { - auto nCurrentTokenIndex = m_nTokenIndex; - SaveState( nToken ); switch( nToken ) { @@ -664,8 +660,6 @@ NEXTTOKEN: SaveState( 0 ); // processed till here, // continue with new token! nToken = GetNextToken(); - - bLooping = nCurrentTokenIndex == m_nTokenIndex; } if( SvParserState::Accepted == eState && 0 < nOpenBrakets ) eState = SvParserState::Error; diff --git a/svtools/source/svrtf/svparser.cxx b/svtools/source/svrtf/svparser.cxx index 021fa7255f77..b8d313e25e77 100644 --- a/svtools/source/svrtf/svparser.cxx +++ b/svtools/source/svrtf/svparser.cxx @@ -76,7 +76,6 @@ SvParser<T>::SvParser( SvStream& rIn, sal_uInt8 nStackSize ) , nlLineNr( 1 ) , nlLinePos( 1 ) , pImplData( nullptr ) - , m_nTokenIndex(0) , nTokenValue( 0 ) , bTokenHasValue( false ) , eState( SvParserState::NotStarted ) @@ -476,7 +475,6 @@ T SvParser<T>::GetNextToken() bTokenHasValue = pTokenStackPos->bTokenHasValue; aToken = pTokenStackPos->sToken; nRet = pTokenStackPos->nTokenId; - ++m_nTokenIndex; } // no, now push actual value on stack else if( SvParserState::Working == eState ) @@ -485,7 +483,6 @@ T SvParser<T>::GetNextToken() pTokenStackPos->nTokenValue = nTokenValue; pTokenStackPos->bTokenHasValue = bTokenHasValue; pTokenStackPos->nTokenId = nRet; - ++m_nTokenIndex; } else if( SvParserState::Accepted != eState && SvParserState::Pending != eState ) eState = SvParserState::Error; // an error occurred @@ -504,8 +501,6 @@ T SvParser<T>::SkipToken( short nCnt ) // "skip" n Tokens backward nTmp = nTokenStackSize; nTokenStackPos = sal_uInt8(nTmp); - m_nTokenIndex -= nTmp; - // restore values aToken = pTokenStackPos->sToken; nTokenValue = pTokenStackPos->nTokenValue; |