forked from enlightenment/efl
evas - evas gl - fix realloc failure case to handle it properly
patched shader string realloc failure not handled right - could leak patched string and p.
This commit is contained in:
parent
f3d1db0fba
commit
6a75806e54
|
@ -2137,10 +2137,17 @@ do_eglShaderPatch(const char *source, int length, int *patched_len)
|
|||
int new_len = strlen(p);
|
||||
if (*patched_len + new_len > patched_size)
|
||||
{
|
||||
patched_size *= 2;
|
||||
patched = realloc(patched, patched_size + 1);
|
||||
char *tmp;
|
||||
|
||||
if (!patched) return NULL;
|
||||
patched_size *= 2;
|
||||
tmp = realloc(patched, patched_size + 1);
|
||||
if (!tmp)
|
||||
{
|
||||
free(patched);
|
||||
free(p);
|
||||
return NULL;
|
||||
}
|
||||
patched = tmp;
|
||||
}
|
||||
|
||||
memcpy(patched + *patched_len, p, new_len);
|
||||
|
|
|
@ -3347,12 +3347,18 @@ patch_gles_shader(const char *source, int length, int *patched_len)
|
|||
int new_len = strlen(p);
|
||||
if (*patched_len + new_len > patched_size)
|
||||
{
|
||||
patched_size *= 2;
|
||||
patched = realloc(patched, patched_size + 1);
|
||||
char *tmp;
|
||||
|
||||
if (!patched)
|
||||
patched_size *= 2;
|
||||
tmp = realloc(patched, patched_size + 1);
|
||||
if (!tmp)
|
||||
{
|
||||
free(patched);
|
||||
free(p);
|
||||
return NULL;
|
||||
}
|
||||
patched = tmp;
|
||||
}
|
||||
|
||||
memcpy(patched + *patched_len, p, new_len);
|
||||
*patched_len += new_len;
|
||||
|
|
Loading…
Reference in New Issue