summaryrefslogtreecommitdiff
path: root/oox
diff options
context:
space:
mode:
authorMatteo Casalin <matteo.casalin@yahoo.com>2019-02-22 19:43:32 +0100
committerMatteo Casalin <matteo.casalin@yahoo.com>2019-03-20 07:46:43 +0100
commitc5db5deba2a798b361526d57f42a3ea60b1f00cf (patch)
tree51ed3888cd9e5dd7c2153d9831770c9affa2e67f /oox
parent1150f730795e37ff28394af2a343c3e79b1bcb6c (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>
Diffstat (limited to 'oox')
-rw-r--r--oox/source/drawingml/customshapepresetdata.cxx23
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(", ");
}
}