summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorAntti Määttä <[email protected]>2023-04-17 08:35:25 +0300
committerQt Cherry-pick Bot <[email protected]>2023-05-31 07:28:39 +0000
commit806bcef1ed4872704d9ece9064f8b0b5fbfc73e6 (patch)
tree437f9e8b6cfbe21d3ebe1f581e234da4c915846c
parent8da2bd1f2eab0294b8cb5966fcc418db7de489fd (diff)
Fix reading multiple ranges
Fix reading ranges from metadata when there are multiple RANGE elements in the metadata. Change-Id: I1d176ded539c55ce72664c9c7c3f65d694be898c Reviewed-by: Antti Määttä <[email protected]> Reviewed-by: Janne Koskinen <[email protected]> (cherry picked from commit f1257b15cb735d1820ed7092cdcdc104ed3fbd67) Reviewed-by: Qt Cherry-pick Bot <[email protected]>
-rw-r--r--src/tools/tracepointgen/parser.cpp14
1 files changed, 10 insertions, 4 deletions
diff --git a/src/tools/tracepointgen/parser.cpp b/src/tools/tracepointgen/parser.cpp
index 178864068a9..22330d6470a 100644
--- a/src/tools/tracepointgen/parser.cpp
+++ b/src/tools/tracepointgen/parser.cpp
@@ -353,8 +353,7 @@ static QList<EnumNameValue> enumsToValues(const QStringList &values)
}
}
} else {
- r.name = value;
- r.value = cur++;
+ r.value = ++cur;
ret << r;
}
}
@@ -384,7 +383,7 @@ void Parser::parseMetadata(const QString &data, qsizetype offset, const QStringL
qsizetype prev = 0;
while (i.hasNext()) {
QRegularExpressionMatch match = i.next();
- const QString values = match.captured(2).trimmed();
+ QString values = match.captured(2).trimmed();
int cur = match.capturedStart();
if (cur > prev)
m_metadata.append(preprocessed.mid(prev, cur - prev));
@@ -392,7 +391,7 @@ void Parser::parseMetadata(const QString &data, qsizetype offset, const QStringL
prev = match.capturedEnd() + 1;
DEBUGPRINTF2(printf("values: %s\n", qPrintable(values)));
if (values.isEmpty() || values.startsWith(QStringLiteral("AUTO"))) {
-
+ values.replace(QLatin1Char('\n'), QLatin1Char(' '));
QStringList ranges;
if (values.contains(QStringLiteral("RANGE"))) {
QRegularExpression rangeMacro(QStringLiteral("RANGE +([A-Za-z0-9_]*) +... +([A-Za-z0-9_]*)"));
@@ -421,16 +420,23 @@ void Parser::parseMetadata(const QString &data, qsizetype offset, const QStringL
auto moreValues = enumsToValues(values);
if (ranges.size()) {
for (int i = 0; i < ranges.size() / 2; i++) {
+ bool rangeFound = false;
for (auto &v : moreValues) {
if (v.name == ranges[2 * i]) {
+ rangeFound = true;
QString rangeEnd = ranges[2 * i + 1];
auto iter = std::find_if(moreValues.begin(), moreValues.end(), [&rangeEnd](const EnumNameValue &elem){
return elem.name == rangeEnd;
});
if (iter != moreValues.end())
v.valueStr = QStringLiteral("RANGE(%1, %2 ... %3)").arg(v.name).arg(v.value).arg(iter->value);
+ else
+ panic("Unable to find range end: %s\n", qPrintable(rangeEnd));
+ break;
}
}
+ if (rangeFound == false)
+ panic("Unable to find range begin: %s\n", qPrintable(ranges[2 * i]));
}
}
std::sort(moreValues.begin(), moreValues.end(), [](const EnumNameValue &a, const EnumNameValue &b) {