sw/source/core/text/itratr.cxx | 16 ++++++++++++---- 1 file changed, 12 insertions(+), 4 deletions(-)
New commits: commit 7f5ed8228290e6e9ca9fac301d6a6adbda31ff23 Author: Matthew J. Francis <mjay.fran...@gmail.com> Date: Fri Oct 3 11:27:20 2014 +0800 Speed up SwAttrIter::GetNextAttr() The inner loop which iterates over the characters of m_pTxtNode->GetTxt() is already bounded to the length of the string, so there's no need to pay the price of checking its length for each array position Change-Id: I7674ea2b46db75fea30dd016b96ec932068fd73b Reviewed-on: https://gerrit.libreoffice.org/11784 Reviewed-by: David Tardon <dtar...@redhat.com> Tested-by: David Tardon <dtar...@redhat.com> diff --git a/sw/source/core/text/itratr.cxx b/sw/source/core/text/itratr.cxx index 3c4451c..a66618f 100644 --- a/sw/source/core/text/itratr.cxx +++ b/sw/source/core/text/itratr.cxx @@ -306,11 +306,19 @@ sal_Int32 SwAttrIter::GetNextAttr( ) const // TODO maybe use hints like FieldHints for this instead of looking at the text... const sal_Int32 l = nNext<m_pTxtNode->Len() ? nNext : m_pTxtNode->Len(); sal_Int32 p=nPos; - while (p<l && m_pTxtNode->GetTxt()[p] != CH_TXT_ATR_FIELDSTART - && m_pTxtNode->GetTxt()[p] != CH_TXT_ATR_FIELDEND - && m_pTxtNode->GetTxt()[p] != CH_TXT_ATR_FORMELEMENT) + const sal_Unicode* aStr = m_pTxtNode->GetTxt().getStr(); + while (p<l) { - ++p; + sal_Unicode aChar = aStr[p]; + if (aChar < CH_TXT_ATR_FORMELEMENT + || aChar > CH_TXT_ATR_FIELDEND) + { + ++p; + } + else + { + break; + } } if ((p<l && p>nPos) || nNext<=p) nNext=p; _______________________________________________ Libreoffice-commits mailing list libreoffice-comm...@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/libreoffice-commits