[Libreoffice-commits] core.git: sax/source

Noel Grandin (via logerrit) logerrit at kemper.freedesktop.org
Mon Jun 15 13:58:25 UTC 2020


 sax/source/fastparser/fastparser.cxx |    9 ++++++---
 1 file changed, 6 insertions(+), 3 deletions(-)

New commits:
commit 786d0b9abf76b2f84d333e18c902a374ab3b3090
Author:     Noel Grandin <noel.grandin at collabora.co.uk>
AuthorDate: Mon Jun 15 09:26:24 2020 +0200
Commit:     Noel Grandin <noel.grandin at collabora.co.uk>
CommitDate: Mon Jun 15 15:57:48 2020 +0200

    small optimisations
    
    remove a couple of string copies in the XML parser, which is always a
    hot path
    
    Change-Id: I84460ce13fb197bc7a3d354ff4c39d6939ff1d7e
    Reviewed-on: https://gerrit.libreoffice.org/c/core/+/96313
    Tested-by: Jenkins
    Reviewed-by: Noel Grandin <noel.grandin at collabora.co.uk>

diff --git a/sax/source/fastparser/fastparser.cxx b/sax/source/fastparser/fastparser.cxx
index 49648fe626b2..a10ccdbcae24 100644
--- a/sax/source/fastparser/fastparser.cxx
+++ b/sax/source/fastparser/fastparser.cxx
@@ -1227,9 +1227,12 @@ void FastSaxParserImpl::callbackStartElement(const xmlChar *localName , const xm
                 nNamespaceToken = GetNamespaceToken( sNamespace );
                 aElementPrefix = OUString( XML_CAST( prefix ), strlen( XML_CAST( prefix )), RTL_TEXTENCODING_UTF8 );
             }
-            const OUString& rElementLocalName = OUString( XML_CAST( localName ), strlen( XML_CAST( localName )), RTL_TEXTENCODING_UTF8 );
+            OUString aElementLocalName( XML_CAST( localName ), strlen( XML_CAST( localName )), RTL_TEXTENCODING_UTF8 );
             rEvent.msNamespace = sNamespace;
-            rEvent.msElementName = (aElementPrefix.isEmpty())? rElementLocalName : aElementPrefix + ":" + rElementLocalName;
+            if( aElementPrefix.isEmpty() )
+                rEvent.msElementName = std::move(aElementLocalName);
+            else
+                rEvent.msElementName = aElementPrefix + ":" + aElementLocalName;
         }
         else // token is always preferred.
             rEvent.msElementName.clear();
@@ -1305,7 +1308,7 @@ void FastSaxParserImpl::sendPendingCharacters()
     if (rEntity.mbEnableThreads)
     {
         Event& rEvent = rEntity.getEvent( CallbackType::CHARACTERS );
-        rEvent.msChars = sChars;
+        rEvent.msChars = std::move(sChars);
         produce();
     }
     else


More information about the Libreoffice-commits mailing list