summaryrefslogtreecommitdiffstats
path: root/desktop-widgets/templatelayout.cpp
diff options
context:
space:
mode:
authorGravatar Lubomir I. Ivanov <neolit123@gmail.com>2016-03-01 00:15:34 +0200
committerGravatar Dirk Hohndel <dirk@hohndel.org>2016-02-29 15:42:33 -0800
commitb275e604c13004427e37cc1f42139d2f412158f2 (patch)
tree475dc3259743a5be55b6f0bc80a9f2300a02edb4 /desktop-widgets/templatelayout.cpp
parentabab031ed2547d3bc9183a6e7c4c090ad0548463 (diff)
downloadsubsurface-b275e604c13004427e37cc1f42139d2f412158f2.tar.gz
templatelayout.cpp: fix potential issue in preprocessTemplate()
The function preprocessTemplate(), did not account well for indexes in Grantlee variables, such as: dive.weight# (where # is the index) dive.cylinder# To solve the issue the list (QList<QPair<QString, QString> >) for variables to be replaced is populated will all possible indexes: 0 - MAX_WEIGHTSYSTEM for weights 0 - MAX_CYLINDERS for cylinders Signed-off-by: Lubomir I. Ivanov <neolit123@gmail.com> Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
Diffstat (limited to 'desktop-widgets/templatelayout.cpp')
-rw-r--r--desktop-widgets/templatelayout.cpp14
1 files changed, 10 insertions, 4 deletions
diff --git a/desktop-widgets/templatelayout.cpp b/desktop-widgets/templatelayout.cpp
index 34443b9c1..fd0a44c75 100644
--- a/desktop-widgets/templatelayout.cpp
+++ b/desktop-widgets/templatelayout.cpp
@@ -55,18 +55,24 @@ TemplateLayout::~TemplateLayout()
*/
static QString preprocessTemplate(const QString &in)
{
+ int i;
QString out = in;
-
+ QString iStr;
QList<QPair<QString, QString> > list;
- list << qMakePair(QString("dive.weight"), QString("dive.weights."));
+
+ /* populate known variables in a QPair list */
list << qMakePair(QString("dive.weights"), QString("dive.weightList"));
- list << qMakePair(QString("dive.cylinder"), QString("dive.cylinders."));
+ for (i = 0; i < MAX_WEIGHTSYSTEMS; i++)
+ list << qMakePair(QString("dive.weight%1").arg(i), QString("dive.weights.%1").arg(i));
+
list << qMakePair(QString("dive.cylinders"), QString("dive.cylinderList"));
+ for (i = 0; i < MAX_CYLINDERS; i++)
+ list << qMakePair(QString("dive.cylinder%1").arg(i), QString("dive.cylinders.%1").arg(i));
/* lazy method of variable replacement without regex. the Grantlee parser
* works with a single or no space next to the variable markers -
* e.g. '{{ var }}' */
- for (int i = 0; i < list.length(); i++) {
+ for (i = 0; i < list.length(); i++) {
QPair<QString, QString> p = list.at(i);
out.replace("{{ " + p.first + " }}", "{{ " + p.second + " }}");
out.replace("{{" + p.first + "}}", "{{" + p.second + "}}");