skin_engine: Fix a obscure parser bug

Tag params where a [] group is followed (but not immediatly) by
a * will not parse correctly. e.g [si]iii|s* will attempt to find
an 'i' after the second s instead of looping s's

Change-Id: I3982f726b6539818f8332334b263b673259f98ef
This commit is contained in:
Jonathan Gordon 2012-07-05 22:41:10 +10:00
parent c413591e7e
commit 4c94b98422

View file

@ -617,7 +617,7 @@ static int skin_parse_tag(struct skin_element* element, const char** document)
/* Checking for comments */
if(*cursor == COMMENTSYM)
skip_comment(&cursor);
if (*tag_args == '[')
{
/* we need to guess which type of param it is.
@ -782,7 +782,7 @@ static int skin_parse_tag(struct skin_element* element, const char** document)
{
if (i+1 == num_args)
tag_args += 2;
else if (open_square_bracket)
else if (open_square_bracket && *tag_args == ']')
{
tag_args = open_square_bracket;
open_square_bracket = NULL;