diff options
author | louis <louis.braun@gmx.de> | 2015-01-27 17:36:29 +0100 |
---|---|---|
committer | louis <louis.braun@gmx.de> | 2015-01-27 17:36:29 +0100 |
commit | 17497de3c3efa04094fc26a22810a42a4f78eb3c (patch) | |
tree | 4a67a9ac9632382f1582981383dbf48d4b24aec1 | |
parent | 15ad84bccf46ccedd894cabb03ff18d1b7707214 (diff) | |
download | vdr-plugin-skindesigner-17497de3c3efa04094fc26a22810a42a4f78eb3c.tar.gz vdr-plugin-skindesigner-17497de3c3efa04094fc26a22810a42a4f78eb3c.tar.bz2 |
fixed bug that global tokens were not parsed correctly
-rw-r--r-- | HISTORY | 1 | ||||
-rw-r--r-- | libtemplate/globals.c | 38 |
2 files changed, 23 insertions, 16 deletions
@@ -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); } } |