mirror of
				https://github.com/subsurface/subsurface.git
				synced 2025-02-19 22:16:15 +00:00 
			
		
		
		
	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>
This commit is contained in:
		
							parent
							
								
									abab031ed2
								
							
						
					
					
						commit
						b275e604c1
					
				
					 1 changed files with 10 additions and 4 deletions
				
			
		|  | @ -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 + "}}"); | ||||
|  |  | |||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue