diff options
author | Matteo Casalin <matteo.casalin@yahoo.com> | 2019-02-22 19:43:32 +0100 |
---|---|---|
committer | Matteo Casalin <matteo.casalin@yahoo.com> | 2019-03-20 07:46:43 +0100 |
commit | c5db5deba2a798b361526d57f42a3ea60b1f00cf (patch) | |
tree | 51ed3888cd9e5dd7c2153d9831770c9affa2e67f | |
parent | 1150f730795e37ff28394af2a343c3e79b1bcb6c (diff) |
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@yahoo.com>
-rw-r--r-- | oox/source/drawingml/customshapepresetdata.cxx | 23 |
1 files changed, 10 insertions, 13 deletions
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(", "); } } |