forked from enlightenment/efl
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:
parent
9470252450
commit
d5c913c60b
|
@ -64,7 +64,7 @@ static void
|
||||||
code_parse_internal(Code *code)
|
code_parse_internal(Code *code)
|
||||||
{
|
{
|
||||||
Code_Symbol *sym = NULL, *func = NULL;
|
Code_Symbol *sym = NULL, *func = NULL;
|
||||||
Token *token, *tmp;
|
Token *token, *tmp = NULL;
|
||||||
char *begin = code->shared;
|
char *begin = code->shared;
|
||||||
char *end = begin + strlen(begin);
|
char *end = begin + strlen(begin);
|
||||||
char *body;
|
char *body;
|
||||||
|
@ -92,9 +92,18 @@ code_parse_internal(Code *code)
|
||||||
token = tmp;
|
token = tmp;
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (tmp->str) free(tmp->str);
|
||||||
|
free(tmp);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (tmp)
|
||||||
|
{
|
||||||
|
if (tmp->str) free(tmp->str);
|
||||||
|
free(tmp);
|
||||||
|
}
|
||||||
|
|
||||||
switch (token->type)
|
switch (token->type)
|
||||||
{
|
{
|
||||||
case TOKEN_TYPE_COLON:
|
case TOKEN_TYPE_COLON:
|
||||||
|
@ -176,6 +185,9 @@ code_parse_internal(Code *code)
|
||||||
}
|
}
|
||||||
if (!depth)
|
if (!depth)
|
||||||
break;
|
break;
|
||||||
|
|
||||||
|
if (tmp->str) free(tmp->str);
|
||||||
|
free(tmp);
|
||||||
}
|
}
|
||||||
if ((begin - 1) > body)
|
if ((begin - 1) > body)
|
||||||
{
|
{
|
||||||
|
@ -204,6 +216,12 @@ code_parse_internal(Code *code)
|
||||||
if (token->str)
|
if (token->str)
|
||||||
free(token->str);
|
free(token->str);
|
||||||
free(token);
|
free(token);
|
||||||
|
|
||||||
|
if (tmp)
|
||||||
|
{
|
||||||
|
if (tmp->str) free(tmp->str);
|
||||||
|
free(tmp);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
eina_array_free(name_stack);
|
eina_array_free(name_stack);
|
||||||
|
|
Loading…
Reference in New Issue