summaryrefslogtreecommitdiff
path: root/glcdskin
diff options
context:
space:
mode:
authormrwastl <mrwastl@users.sourceforge.net>2011-05-13 19:31:48 +0200
committermrwastl <mrwastl@users.sourceforge.net>2011-05-13 19:31:48 +0200
commit9a4532d4904088f9c5cde08542d85dc858b92e9b (patch)
tree40cd1a4eed017f317e6ab38745b05f782a083110 /glcdskin
parent7dde0d21713c50b179438697c540aeef4a95a4f7 (diff)
downloadgraphlcd-base-9a4532d4904088f9c5cde08542d85dc858b92e9b.tar.gz
graphlcd-base-9a4532d4904088f9c5cde08542d85dc858b92e9b.tar.bz2
don't read colons from token definitions as argument separators from functions
Diffstat (limited to 'glcdskin')
-rw-r--r--glcdskin/function.c10
1 files changed, 9 insertions, 1 deletions
diff --git a/glcdskin/function.c b/glcdskin/function.c
index 0fe39b3..03b1b32 100644
--- a/glcdskin/function.c
+++ b/glcdskin/function.c
@@ -137,9 +137,17 @@ bool cSkinFunction::Parse(const std::string & Text)
}
else
{
+ bool inToken = false;
+
// expression
for (; *ptr; ++ptr)
{
+
+ if (*ptr == '{')
+ inToken = true;
+ else if (inToken && *ptr == '}')
+ inToken = false;
+
if (*ptr == '(')
{
if (inExpr++ == 0)
@@ -163,7 +171,7 @@ bool cSkinFunction::Parse(const std::string & Text)
last = ptr + 1;
}
}
- else if (*ptr == ',' || *ptr == ')')
+ else if ( ( (!inToken) && (*ptr == ',') ) || *ptr == ')')
{
if (inExpr == 0)
{