diff options
author | mrwastl <mrwastl@users.sourceforge.net> | 2011-05-13 19:31:48 +0200 |
---|---|---|
committer | mrwastl <mrwastl@users.sourceforge.net> | 2011-05-13 19:31:48 +0200 |
commit | 9a4532d4904088f9c5cde08542d85dc858b92e9b (patch) | |
tree | 40cd1a4eed017f317e6ab38745b05f782a083110 /glcdskin | |
parent | 7dde0d21713c50b179438697c540aeef4a95a4f7 (diff) | |
download | graphlcd-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.c | 10 |
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) { |