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:
Carsten Haitzler 2013-12-11 22:44:42 +09:00
parent f3d1db0fba
commit 6a75806e54
2 changed files with 20 additions and 7 deletions

View File

@ -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);

View File

@ -3347,11 +3347,17 @@ 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)
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);