summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorlouis <louis.braun@gmx.de>2015-01-27 17:36:29 +0100
committerlouis <louis.braun@gmx.de>2015-01-27 17:36:29 +0100
commit17497de3c3efa04094fc26a22810a42a4f78eb3c (patch)
tree4a67a9ac9632382f1582981383dbf48d4b24aec1
parent15ad84bccf46ccedd894cabb03ff18d1b7707214 (diff)
downloadvdr-plugin-skindesigner-17497de3c3efa04094fc26a22810a42a4f78eb3c.tar.gz
vdr-plugin-skindesigner-17497de3c3efa04094fc26a22810a42a4f78eb3c.tar.bz2
fixed bug that global tokens were not parsed correctly
-rw-r--r--HISTORY1
-rw-r--r--libtemplate/globals.c38
2 files changed, 23 insertions, 16 deletions
diff --git a/HISTORY b/HISTORY
index 5b7b715..88ca447 100644
--- a/HISTORY
+++ b/HISTORY
@@ -190,3 +190,4 @@ Version 0.2.0
Version 0.2.1
+- fixed bug that global tokens were not parsed correctly
diff --git a/libtemplate/globals.c b/libtemplate/globals.c
index 1ce7502..e09638b 100644
--- a/libtemplate/globals.c
+++ b/libtemplate/globals.c
@@ -73,12 +73,15 @@ void cGlobals::ReplaceIntVars(string &value) {
stringstream sToken;
sToken << "{" << it->first << "}";
string token = sToken.str();
- size_t foundToken = value.find(token);
- if (foundToken != string::npos) {
- stringstream st;
- st << it->second;
- value = value.replace(foundToken, token.size(), st.str());
- }
+ size_t foundToken = string::npos;
+ do {
+ foundToken = value.find(token);
+ if (foundToken != string::npos) {
+ stringstream st;
+ st << it->second;
+ value = value.replace(foundToken, token.size(), st.str());
+ }
+ } while (foundToken != string::npos);
}
}
@@ -107,18 +110,21 @@ void cGlobals::ReplaceDoubleVars(string &value) {
stringstream sToken;
sToken << "{" << it->first << "}";
string token = sToken.str();
- size_t foundToken = value.find(token);
- if (foundToken != string::npos) {
- stringstream st;
- st << it->second;
- string doubleVal = st.str();
- if (config.replaceDecPoint) {
- if (doubleVal.find_first_of('.') != string::npos) {
- std::replace( doubleVal.begin(), doubleVal.end(), '.', config.decPoint);
+ size_t foundToken = string::npos;
+ do {
+ foundToken = value.find(token);
+ if (foundToken != string::npos) {
+ stringstream st;
+ st << it->second;
+ string doubleVal = st.str();
+ if (config.replaceDecPoint) {
+ if (doubleVal.find_first_of('.') != string::npos) {
+ std::replace( doubleVal.begin(), doubleVal.end(), '.', config.decPoint);
+ }
}
+ value = value.replace(foundToken, token.size(), doubleVal);
}
- value = value.replace(foundToken, token.size(), doubleVal);
- }
+ } while (foundToken != string::npos);
}
}