From 36ea730a7024db3a9738183f870367153f1b1578 Mon Sep 17 00:00:00 2001 From: mrwastl Date: Sat, 7 May 2011 20:10:34 +0200 Subject: bug fix when value of a variable contains token definitions: reparse this value --- glcdskin/string.c | 14 ++++++++++++-- 1 file changed, 12 insertions(+), 2 deletions(-) diff --git a/glcdskin/string.c b/glcdskin/string.c index 90a1670..f2195c6 100644 --- a/glcdskin/string.c +++ b/glcdskin/string.c @@ -257,8 +257,18 @@ cType cSkinString::Evaluate(void) const idxend = result_raw.find("#", idxstart+1); cSkinVariable * variable = mSkin->GetVariable(result_raw.substr(idxstart+1, idxend-idxstart-1)); if (variable) { - result_trans.append ((std::string) variable->Value()); - // syslog(LOG_ERR, "string variable %s", trans.c_str()); + std::string val = (std::string) variable->Value(); + + // if value of variable contains token definions: reparse value + if (val.find("{") != std::string::npos) { + cSkinString *result = new cSkinString(Object(), false); + if (result->Parse(val)) { + val = (std::string) result->Evaluate(); + } + delete result; + } + result_trans.append (val); + // syslog(LOG_ERR, "string variable %s", trans.c_str()); } idxstart = idxend+1; pos = idxstart; -- cgit v1.2.3