diff --git a/src/modules/evas/engines/gl_common/evas_gl_api.c b/src/modules/evas/engines/gl_common/evas_gl_api.c index 0871467cbe..a2ba18c542 100644 --- a/src/modules/evas/engines/gl_common/evas_gl_api.c +++ b/src/modules/evas/engines/gl_common/evas_gl_api.c @@ -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); diff --git a/src/modules/evas/engines/software_generic/evas_engine.c b/src/modules/evas/engines/software_generic/evas_engine.c index 3fb420a395..06bb479a25 100644 --- a/src/modules/evas/engines/software_generic/evas_engine.c +++ b/src/modules/evas/engines/software_generic/evas_engine.c @@ -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);