forked from enlightenment/efl
eet: handling memory leak on realloc fail.
Summary: Signed-off-by: Srivardhan Hebbar <sri.hebbar@samsung.com> Reviewers: cedric Differential Revision: https://phab.enlightenment.org/D3208 Signed-off-by: Cedric BAIL <cedric@osg.samsung.com>
This commit is contained in:
parent
ccd7c2b014
commit
71e68dcca6
|
@ -2810,21 +2810,28 @@ _eet_data_dump_token_get(const char *src,
|
||||||
int *len)
|
int *len)
|
||||||
{
|
{
|
||||||
const char *p;
|
const char *p;
|
||||||
char *tok = NULL;
|
char *tok = NULL, *temp;
|
||||||
int in_token = 0;
|
int in_token = 0;
|
||||||
int in_quote = 0;
|
int in_quote = 0;
|
||||||
int in_escape = 0;
|
int in_escape = 0;
|
||||||
int tlen = 0, tsize = 0;
|
int tlen = 0, tsize = 0;
|
||||||
|
|
||||||
#define TOK_ADD(x) \
|
#define TOK_ADD(x) \
|
||||||
do { \
|
do { \
|
||||||
tlen++; \
|
tlen++; \
|
||||||
if (tlen >= tsize) \
|
if (tlen >= tsize) \
|
||||||
{ \
|
{ \
|
||||||
tsize += 32; \
|
tsize += 32; \
|
||||||
tok = realloc(tok, tsize); \
|
temp = tok; \
|
||||||
} \
|
tok = realloc(tok, tsize); \
|
||||||
tok[tlen - 1] = x; \
|
if (!tok) \
|
||||||
|
{ \
|
||||||
|
tok = temp; \
|
||||||
|
ERR("Realloc failed\n"); \
|
||||||
|
goto realloc_error; \
|
||||||
|
} \
|
||||||
|
} \
|
||||||
|
tok[tlen - 1] = x; \
|
||||||
} while (0)
|
} while (0)
|
||||||
|
|
||||||
for (p = src; *len > 0; p++, (*len)--)
|
for (p = src; *len > 0; p++, (*len)--)
|
||||||
|
@ -2890,6 +2897,7 @@ _eet_data_dump_token_get(const char *src,
|
||||||
return tok;
|
return tok;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
realloc_error:
|
||||||
free(tok);
|
free(tok);
|
||||||
|
|
||||||
return NULL;
|
return NULL;
|
||||||
|
|
Loading…
Reference in New Issue