sfx2/source/appl/newhelp.cxx                  |   28 ++++++++++--------------
 svtools/source/config/printoptions.cxx        |    6 -----
 svtools/source/misc/imap2.cxx                 |    6 +----
 svx/source/form/fmshimp.cxx                   |    5 +---
 svx/source/gallery2/galbrws2.cxx              |    3 --
 svx/source/gallery2/gallery1.cxx              |   20 ++++++++++-------
 svx/source/gallery2/galmisc.cxx               |    2 -
 svx/source/xml/xmlgrhlp.cxx                   |   30 ++++++++++----------------
 sw/source/core/unocore/unochart.cxx           |   17 +++++++++-----
 sw/source/core/unocore/unofield.cxx           |    3 --
 sw/source/filter/html/htmlforw.cxx            |   19 +++++++++++++---
 sw/source/filter/ww8/docxattributeoutput.cxx  |    9 +++----
 sw/source/ui/dbui/createaddresslistdialog.cxx |   13 ++++-------
 13 files changed, 79 insertions(+), 82 deletions(-)

New commits:
commit 6050f9cf7b39e4d7073e1e54109e436b43dfa519
Author: Matteo Casalin <matteo.casa...@yahoo.com>
Date:   Sat Jun 30 17:03:25 2018 +0200

    Reduce number of operations on OUString
    
    Change-Id: I5d65dd36981e6d75f0e3c0e3f00e1964d1249887

diff --git a/sfx2/source/appl/newhelp.cxx b/sfx2/source/appl/newhelp.cxx
index 0ac8ef38b41b..2d3c73a8d493 100644
--- a/sfx2/source/appl/newhelp.cxx
+++ b/sfx2/source/appl/newhelp.cxx
@@ -954,24 +954,19 @@ SearchTabPage_Impl::~SearchTabPage_Impl()
 void SearchTabPage_Impl::dispose()
 {
     SvtViewOptions aViewOpt( EViewType::TabPage, CONFIGNAME_SEARCHPAGE );
-    sal_Int32 nChecked = m_pFullWordsCB->IsChecked() ? 1 : 0;
-    OUString aUserData = OUString::number( nChecked );
-    aUserData += ";";
-    nChecked = m_pScopeCB->IsChecked() ? 1 : 0;
-    aUserData += OUString::number( nChecked );
-    aUserData += ";";
+    OUString aUserData =
+        OUString::number( m_pFullWordsCB->IsChecked() ? 1 : 0 ) + ";" +
+        OUString::number( m_pScopeCB->IsChecked() ? 1 : 0 );
     sal_Int32 nCount = std::min( m_pSearchED->GetEntryCount(), sal_Int32(10) 
);  // save only 10 entries
 
     for ( sal_Int32 i = 0; i < nCount; ++i )
     {
-        OUString aText = m_pSearchED->GetEntry(i);
-        aUserData += INetURLObject::encode(
-            aText, INetURLObject::PART_UNO_PARAM_VALUE,
+        aUserData += ";" + INetURLObject::encode(
+            m_pSearchED->GetEntry(i),
+            INetURLObject::PART_UNO_PARAM_VALUE,
             INetURLObject::EncodeMechanism::All );
-        aUserData += ";";
     }
 
-    aUserData = comphelper::string::stripEnd(aUserData, ';');
     Any aUserItem = makeAny( aUserData );
     aViewOpt.SetUserItem( USERITEM_NAME, aUserItem );
 
commit fbd787dc9bf048bfc1be8eebf5920a69e34b6b75
Author: Matteo Casalin <matteo.casa...@yahoo.com>
Date:   Sat Jun 30 16:39:46 2018 +0200

    Use indexed getToken() and avoid getTokenCount()
    
    Change-Id: I8807f8e7fd0fb76723bc4d46fa35cc346777051e

diff --git a/sfx2/source/appl/newhelp.cxx b/sfx2/source/appl/newhelp.cxx
index a8234eaa99bf..0ac8ef38b41b 100644
--- a/sfx2/source/appl/newhelp.cxx
+++ b/sfx2/source/appl/newhelp.cxx
@@ -928,16 +928,17 @@ SearchTabPage_Impl::SearchTabPage_Impl(vcl::Window* 
pParent, SfxHelpIndexWindow_
         Any aUserItem = aViewOpt.GetUserItem( USERITEM_NAME );
         if ( aUserItem >>= aUserData )
         {
-            bool bChecked = aUserData.getToken(0, ';').toInt32() == 1;
+            sal_Int32 nIdx {0};
+            bool bChecked = aUserData.getToken(0, ';', nIdx).toInt32() == 1;
             m_pFullWordsCB->Check( bChecked );
-            bChecked = aUserData.getToken(1, ';').toInt32() == 1;
+            bChecked = aUserData.getToken(0, ';', nIdx).toInt32() == 1;
             m_pScopeCB->Check( bChecked );
 
-            for ( sal_Int32 i = 2; i < 
comphelper::string::getTokenCount(aUserData, ';'); ++i )
+            while ( nIdx > 0 )
             {
-                OUString aToken = aUserData.getToken(i, ';');
                 m_pSearchED->InsertEntry( INetURLObject::decode(
-                    aToken, INetURLObject::DecodeMechanism::WithCharset ) );
+                    aUserData.getToken(0, ';', nIdx),
+                    INetURLObject::DecodeMechanism::WithCharset ) );
             }
         }
     }
commit d253ee7c8b04d19e415a4fdeefdc450bdee824e2
Author: Matteo Casalin <matteo.casa...@yahoo.com>
Date:   Sat Jun 30 12:21:22 2018 +0200

    Avoid using getTokenCount() to get last token in a string
    
    Change-Id: I8e26d07c67fe10a55717a238563dd036b94fd381

diff --git a/svtools/source/config/printoptions.cxx 
b/svtools/source/config/printoptions.cxx
index f5d3c178f471..af1101acd8cd 100644
--- a/svtools/source/config/printoptions.cxx
+++ b/svtools/source/config/printoptions.cxx
@@ -30,7 +30,6 @@
 
 #include <comphelper/configurationhelper.hxx>
 #include <comphelper/processfactory.hxx>
-#include <comphelper/string.hxx>
 
 #include "itemholder2.hxx"
 
@@ -129,10 +128,7 @@ SvtPrintOptions_Impl::SvtPrintOptions_Impl(const OUString& 
rConfigRoot)
 
         if (m_xCfg.is())
         {
-            using comphelper::string::getTokenCount;
-            sal_Int32 nTokenCount = getTokenCount(rConfigRoot, '/');
-            OUString sTok = rConfigRoot.getToken(nTokenCount - 1, '/');
-            m_xCfg->getByName(sTok) >>= m_xNode;
+            
m_xCfg->getByName(rConfigRoot.copy(rConfigRoot.lastIndexOf('/')+1)) >>= m_xNode;
         }
     }
     catch (const css::uno::Exception&)
commit 7f232e3319d39e7fb8e0ba0930c20176a91d6325
Author: Matteo Casalin <matteo.casa...@yahoo.com>
Date:   Sat Jun 30 12:05:59 2018 +0200

    Constify, fix whitespaces
    
    Change-Id: Ief4c2e01fb855ce294ecf000dfb9b9e12982e441

diff --git a/svtools/source/misc/imap2.cxx b/svtools/source/misc/imap2.cxx
index e1424f5d47b4..0bccdab00f83 100644
--- a/svtools/source/misc/imap2.cxx
+++ b/svtools/source/misc/imap2.cxx
@@ -287,12 +287,11 @@ void ImageMap::ImpReadCERNLine( const OString& rLine  )
     {
         const sal_uInt16 nCount = comphelper::string::getTokenCount(aStr, '(') 
- 1;
         tools::Polygon aPoly( nCount );
-        OUString aURL;
 
         for ( sal_uInt16 i = 0; i < nCount; i++ )
             aPoly[ i ] = ImpReadCERNCoords( &pStr );
 
-        aURL = ImpReadCERNURL( &pStr );
+        const OUString aURL = ImpReadCERNURL( &pStr );
 
         maList.emplace_back( new IMapPolygonObject( aPoly, aURL, OUString(), 
OUString(), OUString(), OUString() ) );
     }
@@ -425,8 +424,7 @@ void ImageMap::ImpReadNCSALine( const OString& rLine )
     }
     else if ( aToken == "poly" )
     {
-        const sal_uInt16 nCount = comphelper::string::getTokenCount(aStr,
-            ',') - 1;
+        const sal_uInt16 nCount = comphelper::string::getTokenCount(aStr, ',') 
- 1;
         const OUString aURL( ImpReadNCSAURL( &pStr ) );
         tools::Polygon aPoly( nCount );
 
commit f4b1a454883b71c631516ed9fb7f32e31f177821
Author: Matteo Casalin <matteo.casa...@yahoo.com>
Date:   Sat Jun 30 09:56:57 2018 +0200

    Avoid using getTokenCount() to get last token in a string
    
    Change-Id: I6c36394f391850baf641268912e71ebaa3504b5d

diff --git a/svx/source/form/fmshimp.cxx b/svx/source/form/fmshimp.cxx
index 033ea0f337b8..4f3f6cd4eba7 100644
--- a/svx/source/form/fmshimp.cxx
+++ b/svx/source/form/fmshimp.cxx
@@ -408,9 +408,8 @@ namespace
                 for (j=0; j<pCurrentArray->getLength(); ++j, 
++pCurrentListeners)
                 {
                     OUString aListener = (*pCurrentListeners).getTypeName();
-                    sal_Int32 nTokens = 
comphelper::string::getTokenCount(aListener, '.');
-                    if (nTokens)
-                        aListener = aListener.getToken(nTokens - 1, '.');
+                    if (!aListener.isEmpty())
+                        aListener = 
aListener.copy(aListener.lastIndexOf('.')+1);
 
                     if (aListener == pCurrent->ListenerType)
                         // the current ScriptEventDescriptor doesn't match the 
current listeners class
commit ba437fd59da07768826a1e816ba727109d3c5d3b
Author: Matteo Casalin <matteo.casa...@yahoo.com>
Date:   Sat Jun 30 09:50:22 2018 +0200

    Avoid using getTokenCount() to get last token in a string
    
    Change-Id: I1a2d181fdf03926452cb00f49490c9c4151dd8f9

diff --git a/svx/source/gallery2/galbrws2.cxx b/svx/source/gallery2/galbrws2.cxx
index 3570c4c703ed..4760f19dc235 100644
--- a/svx/source/gallery2/galbrws2.cxx
+++ b/svx/source/gallery2/galbrws2.cxx
@@ -18,7 +18,6 @@
  */
 
 
-#include <comphelper/string.hxx>
 #include <sot/formats.hxx>
 #include <svl/urlbmk.hxx>
 #include <svl/stritem.hxx>
@@ -1186,7 +1185,7 @@ OUString GalleryBrowser2::GetItemText( const 
GalleryTheme& rTheme, const SgaObje
         if( aTitle.isEmpty() )
         {
             aTitle = aURL.GetMainURL( 
INetURLObject::DecodeMechanism::Unambiguous );
-            aTitle = aTitle.getToken( 
comphelper::string::getTokenCount(aTitle, '/') - 1, '/' );
+            aTitle = aTitle.copy( aTitle.lastIndexOf('/')+1 );
         }
 
         aRet += aTitle;
commit e07a80e23bc8249a8bf1477aeed8e33f6c4c10be
Author: Matteo Casalin <matteo.casa...@yahoo.com>
Date:   Sat Jun 30 09:26:47 2018 +0200

    Initialize local variable
    
    Change-Id: I07583fe1fb70ffb7ec5cbeaacfdba207dac7eb0d

diff --git a/svx/source/gallery2/gallery1.cxx b/svx/source/gallery2/gallery1.cxx
index 05e2821656f2..87a8c7d3e611 100644
--- a/svx/source/gallery2/gallery1.cxx
+++ b/svx/source/gallery2/gallery1.cxx
@@ -272,7 +272,7 @@ Gallery* Gallery::GetGalleryInstance()
 
 void Gallery::ImplLoad( const OUString& rMultiPath )
 {
-    bool            bIsReadOnlyDir;
+    bool bIsReadOnlyDir {false};
 
     bMultiPath = !rMultiPath.isEmpty();
 
commit 6a53c4f5d984d03bee8a615c8adcd518a9952833
Author: Matteo Casalin <matteo.casa...@yahoo.com>
Date:   Sat Jun 30 09:02:43 2018 +0200

    Avoid getTokenCount() + not empty OUString has at least 1 token
    
    Change-Id: Ib8771f9621e050c100f2a319e354106bf316b24c

diff --git a/svx/source/gallery2/gallery1.cxx b/svx/source/gallery2/gallery1.cxx
index e38da7bc9a98..05e2821656f2 100644
--- a/svx/source/gallery2/gallery1.cxx
+++ b/svx/source/gallery2/gallery1.cxx
@@ -29,7 +29,6 @@
 #include <sal/config.h>
 
 #include <comphelper/processfactory.hxx>
-#include <comphelper/string.hxx>
 #include <osl/thread.h>
 #include <tools/vcompat.hxx>
 #include <vcl/lstbox.hxx>
@@ -273,10 +272,9 @@ Gallery* Gallery::GetGalleryInstance()
 
 void Gallery::ImplLoad( const OUString& rMultiPath )
 {
-    const sal_Int32 nTokenCount = 
comphelper::string::getTokenCount(rMultiPath, ';');
     bool            bIsReadOnlyDir;
 
-    bMultiPath = ( nTokenCount > 0 );
+    bMultiPath = !rMultiPath.isEmpty();
 
     INetURLObject aCurURL(SvtPathOptions().GetConfigPath());
     ImplLoadSubDirs( aCurURL, bIsReadOnlyDir );
@@ -287,9 +285,10 @@ void Gallery::ImplLoad( const OUString& rMultiPath )
     if( bMultiPath )
     {
         bool bIsRelURL {true};
-        for( sal_Int32 i = 0; i < nTokenCount; ++i )
+        sal_Int32 nIdx {0};
+        do
         {
-            aCurURL = INetURLObject(rMultiPath.getToken(i, ';'));
+            aCurURL = INetURLObject(rMultiPath.getToken(0, ';', nIdx));
             if (bIsRelURL)
             {
                 aRelURL = aCurURL;
@@ -301,6 +300,7 @@ void Gallery::ImplLoad( const OUString& rMultiPath )
             if( !bIsReadOnlyDir )
                 aUserURL = aCurURL;
         }
+        while (nIdx>0);
     }
     else
         aRelURL = INetURLObject( rMultiPath );
commit 3199a740ac543b1f8fd55146f5ae062a16a11b6b
Author: Matteo Casalin <matteo.casa...@yahoo.com>
Date:   Sat Jun 30 08:53:44 2018 +0200

    Copy INetURLObject object instead of constructing it twice
    
    Change-Id: Ib20f96fe63218aed4055bd0175ddc9e9c71e3fb3

diff --git a/svx/source/gallery2/gallery1.cxx b/svx/source/gallery2/gallery1.cxx
index 622974c2349d..e38da7bc9a98 100644
--- a/svx/source/gallery2/gallery1.cxx
+++ b/svx/source/gallery2/gallery1.cxx
@@ -286,11 +286,15 @@ void Gallery::ImplLoad( const OUString& rMultiPath )
 
     if( bMultiPath )
     {
-        aRelURL = INetURLObject( rMultiPath.getToken(0, ';') );
-
+        bool bIsRelURL {true};
         for( sal_Int32 i = 0; i < nTokenCount; ++i )
         {
             aCurURL = INetURLObject(rMultiPath.getToken(i, ';'));
+            if (bIsRelURL)
+            {
+                aRelURL = aCurURL;
+                bIsRelURL = false;
+            }
 
             ImplLoadSubDirs( aCurURL, bIsReadOnlyDir );
 
commit f897da3f2d5326cc74d7c656f6d55d8449a24807
Author: Matteo Casalin <matteo.casa...@yahoo.com>
Date:   Sun Jun 24 19:20:00 2018 +0200

    Avoid getTokenCount()
    
    Change-Id: Ia3c7657a89187ff21fca6d07c27ba260a0be36d8

diff --git a/svx/source/gallery2/galmisc.cxx b/svx/source/gallery2/galmisc.cxx
index 99b2b2628537..0fbeebe1e869 100644
--- a/svx/source/gallery2/galmisc.cxx
+++ b/svx/source/gallery2/galmisc.cxx
@@ -169,7 +169,7 @@ OUString GetReducedString( const INetURLObject& rURL, 
sal_Int32 nMaxLen )
 {
     OUString aReduced( rURL.GetMainURL( 
INetURLObject::DecodeMechanism::Unambiguous ) );
 
-    aReduced = aReduced.getToken( comphelper::string::getTokenCount(aReduced, 
'/') - 1, '/' );
+    aReduced = aReduced.copy(aReduced.lastIndexOf('/')+1);
 
     if( INetProtocol::PrivSoffice != rURL.GetProtocol() )
     {
commit ab1e5f514c6f7d9ca482fe628b38e00d51c1e4a5
Author: Matteo Casalin <matteo.casa...@yahoo.com>
Date:   Sun Jun 24 19:14:36 2018 +0200

    Bail out early and reduce temporaries
    
    Change-Id: I78e3d50f0bcbbb482ce79bbb1f14885e1e412569

diff --git a/svx/source/xml/xmlgrhlp.cxx b/svx/source/xml/xmlgrhlp.cxx
index cd785f8d0e1d..4063179e9082 100644
--- a/svx/source/xml/xmlgrhlp.cxx
+++ b/svx/source/xml/xmlgrhlp.cxx
@@ -397,26 +397,22 @@ bool SvXMLGraphicHelper::ImplGetStreamNames( const 
OUString& rURLStr,
                                                  OUString& rPictureStorageName,
                                                  OUString& rPictureStreamName )
 {
-    OUString      aURLStr( rURLStr );
-    bool    bRet = false;
+    if (rURLStr.isEmpty())
+        return false;
 
-    if( !aURLStr.isEmpty() )
-    {
-        aURLStr = aURLStr.copy(aURLStr.lastIndexOf(':')+1);
-
-        if( comphelper::string::getTokenCount(aURLStr, '/') == 1 )
-        {
-            rPictureStorageName = XML_GRAPHICSTORAGE_NAME;
-            rPictureStreamName = aURLStr;
-        }
-        else
-            SvXMLEmbeddedObjectHelper::splitObjectURL(aURLStr, 
rPictureStorageName, rPictureStreamName);
+    const OUString aURLStr {rURLStr.copy(rURLStr.lastIndexOf(':')+1)};
 
-        bRet = !rPictureStreamName.isEmpty();
-        SAL_WARN_IF(!bRet, "svx", "SvXMLGraphicHelper::ImplInsertGraphicURL: 
invalid scheme: " << rURLStr);
+    if( comphelper::string::getTokenCount(aURLStr, '/') == 1 )
+    {
+        rPictureStorageName = XML_GRAPHICSTORAGE_NAME;
+        rPictureStreamName = aURLStr;
     }
+    else
+        SvXMLEmbeddedObjectHelper::splitObjectURL(aURLStr, 
rPictureStorageName, rPictureStreamName);
+
+    SAL_WARN_IF(rPictureStreamName.isEmpty(), "svx", 
"SvXMLGraphicHelper::ImplInsertGraphicURL: invalid scheme: " << rURLStr);
 
-    return bRet;
+    return !rPictureStreamName.isEmpty();
 }
 
 uno::Reference < embed::XStorage > SvXMLGraphicHelper::ImplGetGraphicStorage( 
const OUString& rStorageName )
commit 842bb20958af0a1a8af7e0403142fe3cf0112731
Author: Matteo Casalin <matteo.casa...@yahoo.com>
Date:   Sun Jun 24 18:28:34 2018 +0200

    Avoid getTokenCount()
    
    Change-Id: If884a9eb09b55836995d04cd82832d3f79d6531c

diff --git a/svx/source/xml/xmlgrhlp.cxx b/svx/source/xml/xmlgrhlp.cxx
index 8d010850165c..cd785f8d0e1d 100644
--- a/svx/source/xml/xmlgrhlp.cxx
+++ b/svx/source/xml/xmlgrhlp.cxx
@@ -402,11 +402,9 @@ bool SvXMLGraphicHelper::ImplGetStreamNames( const 
OUString& rURLStr,
 
     if( !aURLStr.isEmpty() )
     {
-        aURLStr = aURLStr.getToken( comphelper::string::getTokenCount(aURLStr, 
':') - 1, ':' );
+        aURLStr = aURLStr.copy(aURLStr.lastIndexOf(':')+1);
 
-        const sal_uInt32 nTokenCount = 
comphelper::string::getTokenCount(aURLStr, '/');
-
-        if( 1 == nTokenCount )
+        if( comphelper::string::getTokenCount(aURLStr, '/') == 1 )
         {
             rPictureStorageName = XML_GRAPHICSTORAGE_NAME;
             rPictureStreamName = aURLStr;
commit 5fa9aa1c8f5b9a3245a0cb23f689fecb563dd31f
Author: Matteo Casalin <matteo.casa...@yahoo.com>
Date:   Sun Jun 24 12:09:11 2018 +0200

    Avoid getTokenCount()
    
    Change-Id: Ia56f125151aa96d014e348b6d022b45138f732c9

diff --git a/sw/source/ui/dbui/createaddresslistdialog.cxx 
b/sw/source/ui/dbui/createaddresslistdialog.cxx
index b0dcf5962536..a43be61db108 100644
--- a/sw/source/ui/dbui/createaddresslistdialog.cxx
+++ b/sw/source/ui/dbui/createaddresslistdialog.cxx
@@ -25,7 +25,6 @@
 #include "createaddresslistdialog.hxx"
 #include "customizeaddresslistdialog.hxx"
 #include <mmconfigitem.hxx>
-#include <comphelper/string.hxx>
 #include <vcl/scrbar.hxx>
 #include <vcl/builderfactory.hxx>
 #include <svtools/controldims.hxx>
@@ -438,12 +437,10 @@ SwCreateAddressListDialog::SwCreateAddressListDialog(
             OUString sLine;
             bool bRead = pStream->ReadByteStringLine( sLine, 
RTL_TEXTENCODING_UTF8 );
 
-            if(bRead)
+            if(bRead && !sLine.isEmpty())
             {
-                //header line
-                sal_Int32 nHeaders = comphelper::string::getTokenCount(sLine, 
'\t');
                 sal_Int32 nIndex = 0;
-                for( sal_Int32 nToken = 0; nToken < nHeaders; ++nToken)
+                do
                 {
                     const OUString sHeader = sLine.getToken( 0, '\t', nIndex );
                     OSL_ENSURE(sHeader.getLength() > 2 &&
@@ -454,14 +451,14 @@ SwCreateAddressListDialog::SwCreateAddressListDialog(
                         m_pCSVData->aDBColumnHeaders.push_back( 
sHeader.copy(1, sHeader.getLength() -2));
                     }
                 }
+                while (nIndex > 0);
             }
             while(pStream->ReadByteStringLine( sLine, RTL_TEXTENCODING_UTF8 ))
             {
                 std::vector<OUString> aNewData;
                 //analyze data line
-                sal_Int32 nDataCount = 
comphelper::string::getTokenCount(sLine, '\t');
-                sal_Int32 nIndex = 0;
-                for( sal_Int32 nToken = 0; nToken < nDataCount; ++nToken)
+                sal_Int32 nIndex = { sLine.isEmpty() ? -1 : 0 };
+                while (nIndex >= 0)
                 {
                     const OUString sData = sLine.getToken( 0, '\t', nIndex );
                     OSL_ENSURE( sData.startsWith("\"") && sData.endsWith("\""),
commit 5b07f513cb758ec831e80f3e4dc1819445cdfb51
Author: Matteo Casalin <matteo.casa...@yahoo.com>
Date:   Sun Jun 24 12:07:11 2018 +0200

    Avoid getTokenCount()
    
    Change-Id: Ia878affbdcb9674675619f34a423ac6c9a90b16d

diff --git a/sw/source/filter/ww8/docxattributeoutput.cxx 
b/sw/source/filter/ww8/docxattributeoutput.cxx
index ec2030f55507..3671060f4d52 100644
--- a/sw/source/filter/ww8/docxattributeoutput.cxx
+++ b/sw/source/filter/ww8/docxattributeoutput.cxx
@@ -1789,11 +1789,10 @@ void DocxAttributeOutput::CmdField_Impl( const 
SwTextNode* pNode, sal_Int32 nPos
             DoWriteFieldRunProperties( pNode, nPos, bWriteCombChars );
         }
 
-        sal_Int32 nNbToken = comphelper::string::getTokenCount(rInfos.sCmd, 
'\t');
-
-        for ( sal_Int32 i = 0; i < nNbToken; i++ )
+        sal_Int32 nIdx { rInfos.sCmd.isEmpty() ? -1 : 0 };
+        while ( nIdx >= 0 )
         {
-            OUString sToken = rInfos.sCmd.getToken( i, '\t' );
+            OUString sToken = rInfos.sCmd.getToken( 0, '\t', nIdx );
             if ( rInfos.eType ==  ww::eCREATEDATE
               || rInfos.eType ==  ww::eSAVEDATE
               || rInfos.eType ==  ww::ePRINTDATE
@@ -1808,7 +1807,7 @@ void DocxAttributeOutput::CmdField_Impl( const 
SwTextNode* pNode, sal_Int32 nPos
             DoWriteCmd( sToken );
 
             // Replace tabs by </instrText><tab/><instrText>
-            if ( i < ( nNbToken - 1 ) )
+            if ( nIdx > 0 ) // Is another token expected?
                 RunText( "\t" );
         }
 
commit 4db69a8343ae7a26a827ec43225922c01ac2b5ef
Author: Matteo Casalin <matteo.casa...@yahoo.com>
Date:   Sun Jun 24 11:54:40 2018 +0200

    Avoid getTokenCount()
    
    Change-Id: I2a1b034ba6b587664ce94560e88af5acb860788d

diff --git a/sw/source/filter/html/htmlforw.cxx 
b/sw/source/filter/html/htmlforw.cxx
index 710846dc9f7c..97636e64efff 100644
--- a/sw/source/filter/html/htmlforw.cxx
+++ b/sw/source/filter/html/htmlforw.cxx
@@ -28,7 +28,6 @@
 #include <com/sun/star/form/XForm.hpp>
 #include <com/sun/star/form/FormComponentType.hpp>
 #include <com/sun/star/awt/XTextLayoutConstrains.hpp>
-#include <comphelper/string.hxx>
 #include <hintids.hxx>
 #include <o3tl/any.hxx>
 #include <vcl/svapp.hxx>
@@ -144,9 +143,21 @@ static void lcl_html_outEvents( SvStream& rStrm,
             continue;
 
         OUString sListener( pDescs[i].ListenerType );
-        sal_Int32 nTok = comphelper::string::getTokenCount(sListener, '.');
-        if( nTok )
-            sListener = sListener.getToken( nTok-1, '.' );
+        if (!sListener.isEmpty())
+        {
+            const sal_Int32 nIdx { sListener.lastIndexOf('.')+1 };
+            if (nIdx>0)
+            {
+                if (nIdx<sListener.getLength())
+                {
+                    sListener = sListener.copy(nIdx);
+                }
+                else
+                {
+                    sListener.clear();
+                }
+            }
+        }
         OUString sMethod( pDescs[i].EventMethod );
 
         const sal_Char *pOpt = nullptr;
commit 21c839d6f69fbddb7850444187eecec1f4f2f27f
Author: Matteo Casalin <matteo.casa...@yahoo.com>
Date:   Sun Jun 24 11:52:47 2018 +0200

    Not empty OUString has at least one token
    
    Change-Id: I02dd1c045af1367ae56eeb60dad23912111dcd6f

diff --git a/sw/source/core/unocore/unofield.cxx 
b/sw/source/core/unocore/unofield.cxx
index 00c8677a5136..97bfb73358b9 100644
--- a/sw/source/core/unocore/unofield.cxx
+++ b/sw/source/core/unocore/unofield.cxx
@@ -2680,8 +2680,7 @@ static SwFieldIds lcl_GetIdByName( OUString& rName, 
OUString& rTypeName )
     else if (rTypeName.equalsIgnoreAsciiCase("DataBase"))
     {
         rName = rName.copy(RTL_CONSTASCII_LENGTH("DataBase."));
-        const sal_Int32 nDotCount = comphelper::string::getTokenCount(rName, 
'.');
-        if( 1 <= nDotCount )
+        if (!rName.isEmpty())
         {
             // #i51815#
             rName = "DataBase." + rName;
commit 051d4fdaea9321732a141db16f61dfd9af744303
Author: Matteo Casalin <matteo.casa...@yahoo.com>
Date:   Sun Jun 24 11:45:14 2018 +0200

    Avoid getTokenCount
    
    Change-Id: I9bbfa1280857e3aaaac78402432001d4b48cd73a

diff --git a/sw/source/core/unocore/unochart.cxx 
b/sw/source/core/unocore/unochart.cxx
index fd5a2a883484..c76d85fb1a45 100644
--- a/sw/source/core/unocore/unochart.cxx
+++ b/sw/source/core/unocore/unochart.cxx
@@ -434,7 +434,7 @@ static bool GetSubranges( const OUString 
&rRangeRepresentation,
         uno::Sequence< OUString > &rSubRanges, bool bNormalize )
 {
     bool bRes = true;
-    sal_Int32 nLen = comphelper::string::getTokenCount(rRangeRepresentation, 
';');
+    const sal_Int32 nLen = 
comphelper::string::getTokenCount(rRangeRepresentation, ';');
     uno::Sequence< OUString > aRanges( nLen );
 
     sal_Int32 nCnt = 0;
@@ -1685,15 +1685,16 @@ OUString SAL_CALL 
SwChartDataProvider::convertRangeToXML( const OUString& rRange
     if (bDisposed)
         throw lang::DisposedException();
 
+    if (rRangeRepresentation.isEmpty())
+        return OUString();
+
     OUString aRes;
 
     // multiple ranges are delimited by a ';' like in
     // "Table1.A1:A4;Table1.C2:C5" the same table must be used in all ranges!
-    sal_Int32 nNumRanges = 
comphelper::string::getTokenCount(rRangeRepresentation, ';');
     SwTable* pFirstFoundTable = nullptr;  // to check that only one table will 
be used
     sal_Int32 nPos = 0;
-    for (sal_Int32 i = 0;  i < nNumRanges;  ++i)
-    {
+    do {
         const OUString aRange( rRangeRepresentation.getToken(0, ';', nPos) );
         SwFrameFormat    *pTableFormat  = nullptr; // pointer to table format
         std::shared_ptr<SwUnoCursor> pCursor;
@@ -1743,6 +1744,7 @@ OUString SAL_CALL SwChartDataProvider::convertRangeToXML( 
const OUString& rRange
             aRes += " ";
         aRes += aTmp;
     }
+    while (nPos>0);
 
     return aRes;
 }
@@ -1753,14 +1755,16 @@ OUString SAL_CALL 
SwChartDataProvider::convertRangeFromXML( const OUString& rXML
     if (bDisposed)
         throw lang::DisposedException();
 
+    if (rXMLRange.isEmpty())
+        return OUString();
+
     OUString aRes;
 
     // multiple ranges are delimited by a ' ' like in
     // "Table1.$A$1:.$A$4 Table1.$C$2:.$C$5" the same table must be used in 
all ranges!
-    sal_Int32 nNumRanges = comphelper::string::getTokenCount(rXMLRange, ' ');
     OUString aFirstFoundTable; // to check that only one table will be used
     sal_Int32 nPos = 0;
-    for (sal_Int32 i = 0;  i < nNumRanges;  ++i)
+    do
     {
         OUString aRange( rXMLRange.getToken(0, ' ', nPos) );
 
@@ -1789,6 +1793,7 @@ OUString SAL_CALL 
SwChartDataProvider::convertRangeFromXML( const OUString& rXML
             aRes += ";";
         aRes += aTmp;
     }
+    while (nPos>0);
 
     return aRes;
 }
_______________________________________________
Libreoffice-commits mailing list
libreoffice-comm...@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/libreoffice-commits

Reply via email to