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

Libreoffice Gerrit user logerrit at kemper.freedesktop.org
Wed Mar 20 06:47:06 UTC 2019


 oox/source/drawingml/customshapepresetdata.cxx |   23 ++++++++++-------------
 1 file changed, 10 insertions(+), 13 deletions(-)

New commits:
commit c5db5deba2a798b361526d57f42a3ea60b1f00cf
Author:     Matteo Casalin <matteo.casalin at yahoo.com>
AuthorDate: Fri Feb 22 19:43:32 2019 +0100
Commit:     Matteo Casalin <matteo.casalin at yahoo.com>
CommitDate: Wed Mar 20 07:46:43 2019 +0100

    Further reducion of OString copying by in-string comparison
    
    Only copy string for SAL_WARN call, to not print unneeded information
    
    Change-Id: I962ac8a7ed9bc8ee08d1ea31f4f13a0670cbdf3a
    Reviewed-on: https://gerrit.libreoffice.org/69232
    Tested-by: Jenkins
    Reviewed-by: Matteo Casalin <matteo.casalin at yahoo.com>

diff --git a/oox/source/drawingml/customshapepresetdata.cxx b/oox/source/drawingml/customshapepresetdata.cxx
index 9c86b98ba259..043b25cd633b 100644
--- a/oox/source/drawingml/customshapepresetdata.cxx
+++ b/oox/source/drawingml/customshapepresetdata.cxx
@@ -275,32 +275,29 @@ void lcl_parseHandleRange(std::vector<beans::PropertyValue>& rHandle, const OStr
         }
         else if (rValue[i] == ',' && !bIgnore)
         {
-            OString aToken = rValue.copy(nStart, i - nStart);
             static const char aExpectedPrefix[] = "Value = (any) { (com.sun.star.drawing.EnhancedCustomShapeParameter) { ";
-            if (aToken.startsWith(aExpectedPrefix))
+            if (rValue.match(aExpectedPrefix, nStart))
             {
                 drawing::EnhancedCustomShapeParameter aParameter;
-                aToken = aToken.copy(strlen(aExpectedPrefix), aToken.getLength() - strlen(aExpectedPrefix) - strlen(" } }"));
+                sal_Int32 nIndex{ nStart + static_cast<sal_Int32>(strlen(aExpectedPrefix)) };
                 // We expect the following here: Value and Type
                 static const char aExpectedVPrefix[] = "Value = (any) { (long) ";
-                assert(aToken.startsWith(aExpectedVPrefix));
-                sal_Int32 nIndex = strlen(aExpectedVPrefix);
-                aParameter.Value <<= aToken.getToken(0, '}', nIndex).toInt32();
+                assert(rValue.match(aExpectedVPrefix, nIndex));
+                nIndex += strlen(aExpectedVPrefix);
+                aParameter.Value <<= rValue.getToken(0, '}', nIndex).toInt32();
 
                 static const char aExpectedTPrefix[] = ", Type = (short) ";
-                aToken = aToken.copy(nIndex);
-                assert(aToken.startsWith(aExpectedTPrefix));
-                nIndex = strlen(aExpectedTPrefix);
-                aParameter.Type = static_cast<sal_Int16>(aToken.getToken(0, '}', nIndex).toInt32());
+                assert(nIndex>=0 && rValue.match(aExpectedTPrefix, nIndex));
+                nIndex += strlen(aExpectedTPrefix);
+                aParameter.Type = static_cast<sal_Int16>(rValue.getToken(0, '}', nIndex).toInt32());
 
                 beans::PropertyValue aPropertyValue;
                 aPropertyValue.Name = rName;
                 aPropertyValue.Value <<= aParameter;
                 rHandle.push_back(aPropertyValue);
-
             }
-            else if (!aToken.startsWith("Name =") && !aToken.startsWith("Handle ="))
-                SAL_WARN("oox", "lcl_parseHandleRange: unexpected token: " << aToken);
+            else if (!rValue.match("Name =", nStart) && !rValue.match("Handle =", nStart))
+                SAL_WARN("oox", "lcl_parseHandleRange: unexpected token: " << rValue.copy(nStart, i - nStart));
             nStart = i + strlen(", ");
         }
     }


More information about the Libreoffice-commits mailing list