edje: fix potential memory leak.

next_token() requires free() for it's returned value and a string attribute
Here logic didn't take care of the memory usage.

@fix
This commit is contained in:
Hermet Park 2018-04-09 11:14:07 +09:00
parent 9470252450
commit d5c913c60b
1 changed files with 19 additions and 1 deletions

View File

@ -64,7 +64,7 @@ static void
code_parse_internal(Code *code)
{
Code_Symbol *sym = NULL, *func = NULL;
Token *token, *tmp;
Token *token, *tmp = NULL;
char *begin = code->shared;
char *end = begin + strlen(begin);
char *body;
@ -92,9 +92,18 @@ code_parse_internal(Code *code)
token = tmp;
break;
}
if (tmp->str) free(tmp->str);
free(tmp);
}
}
if (tmp)
{
if (tmp->str) free(tmp->str);
free(tmp);
}
switch (token->type)
{
case TOKEN_TYPE_COLON:
@ -176,6 +185,9 @@ code_parse_internal(Code *code)
}
if (!depth)
break;
if (tmp->str) free(tmp->str);
free(tmp);
}
if ((begin - 1) > body)
{
@ -204,6 +216,12 @@ code_parse_internal(Code *code)
if (token->str)
free(token->str);
free(token);
if (tmp)
{
if (tmp->str) free(tmp->str);
free(tmp);
}
}
eina_array_free(name_stack);