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);
|
int new_len = strlen(p);
|
||||||
if (*patched_len + new_len > patched_size)
|
if (*patched_len + new_len > patched_size)
|
||||||
{
|
{
|
||||||
patched_size *= 2;
|
char *tmp;
|
||||||
patched = realloc(patched, patched_size + 1);
|
|
||||||
|
|
||||||
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);
|
memcpy(patched + *patched_len, p, new_len);
|
||||||
|
|
|
@ -3347,11 +3347,17 @@ patch_gles_shader(const char *source, int length, int *patched_len)
|
||||||
int new_len = strlen(p);
|
int new_len = strlen(p);
|
||||||
if (*patched_len + new_len > patched_size)
|
if (*patched_len + new_len > patched_size)
|
||||||
{
|
{
|
||||||
patched_size *= 2;
|
char *tmp;
|
||||||
patched = realloc(patched, patched_size + 1);
|
|
||||||
|
|
||||||
if (!patched)
|
patched_size *= 2;
|
||||||
return NULL;
|
tmp = realloc(patched, patched_size + 1);
|
||||||
|
if (!tmp)
|
||||||
|
{
|
||||||
|
free(patched);
|
||||||
|
free(p);
|
||||||
|
return NULL;
|
||||||
|
}
|
||||||
|
patched = tmp;
|
||||||
}
|
}
|
||||||
|
|
||||||
memcpy(patched + *patched_len, p, new_len);
|
memcpy(patched + *patched_len, p, new_len);
|
||||||
|
|
Loading…
Reference in New Issue