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 /libtemplate | |
| 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
Diffstat (limited to 'libtemplate')
| -rw-r--r-- | libtemplate/globals.c | 38 |
1 files changed, 22 insertions, 16 deletions
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); } } |
