From 2ac4f520d613543250bae04b9bc149e2f16f2b9a Mon Sep 17 00:00:00 2001 From: "Carsten Haitzler (Rasterman)" Date: Wed, 13 Aug 2014 08:49:07 +0900 Subject: [PATCH] fix resource leak on format lookup fail so in fixing one CID for a format lookup failing and thus invalid mem access, a possible leak was made in this case. fix that by doing lookup before any allocation and if lookup fails, return there this fixes CID 1230999 1230998 1230997 --- .../evas/engines/gl_common/evas_gl_texture.c | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) diff --git a/src/modules/evas/engines/gl_common/evas_gl_texture.c b/src/modules/evas/engines/gl_common/evas_gl_texture.c index 3ce910052a..1451ac9c58 100644 --- a/src/modules/evas/engines/gl_common/evas_gl_texture.c +++ b/src/modules/evas/engines/gl_common/evas_gl_texture.c @@ -951,11 +951,11 @@ evas_gl_common_texture_native_new(Evas_Engine_GL_Context *gc, unsigned int w, un Evas_GL_Texture *tex; int lformat; - tex = evas_gl_common_texture_alloc(gc, w, h, alpha); - if (!tex) return NULL; - lformat = _evas_gl_texture_search_format(alpha, gc->shared->info.bgra, EVAS_COLORSPACE_ARGB8888); if (lformat < 0) return NULL; + + tex = evas_gl_common_texture_alloc(gc, w, h, alpha); + if (!tex) return NULL; tex->pt = _pool_tex_native_new(gc, w, h, *matching_format[lformat].intformat, *matching_format[lformat].format, @@ -975,11 +975,11 @@ evas_gl_common_texture_render_new(Evas_Engine_GL_Context *gc, unsigned int w, un Evas_GL_Texture *tex; int lformat; - tex = evas_gl_common_texture_alloc(gc, w, h, alpha); - if (!tex) return NULL; - lformat = _evas_gl_texture_search_format(alpha, gc->shared->info.bgra, EVAS_COLORSPACE_ARGB8888); if (lformat < 0) return NULL; + + tex = evas_gl_common_texture_alloc(gc, w, h, alpha); + if (!tex) return NULL; tex->pt = _pool_tex_render_new(gc, w, h, *matching_format[lformat].intformat, *matching_format[lformat].format); @@ -998,11 +998,11 @@ evas_gl_common_texture_dynamic_new(Evas_Engine_GL_Context *gc, Evas_GL_Image *im Evas_GL_Texture *tex; int lformat; - tex = evas_gl_common_texture_alloc(gc, im->w, im->h, im->alpha); - if (!tex) return NULL; - lformat = _evas_gl_texture_search_format(tex->alpha, gc->shared->info.bgra, EVAS_COLORSPACE_ARGB8888); if (lformat < 0) return NULL; + + tex = evas_gl_common_texture_alloc(gc, im->w, im->h, im->alpha); + if (!tex) return NULL; tex->pt = _pool_tex_dynamic_new(gc, tex->w, tex->h, *matching_format[lformat].intformat, *matching_format[lformat].format);