From: jiin.moon Date: Mon, 17 Jul 2017 08:07:25 +0000 (+0900) Subject: Evas and Eolian : Freed string buffer X-Git-Tag: accepted/tizen/unified/20170721.201732~6 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=71bec20bcb5d8a0a6291347a494966ac4c15d204;p=platform%2Fupstream%2Fefl.git Evas and Eolian : Freed string buffer Summary : String buffer returned by eina_strbuf_new() is not freed in some cases @Fix Signed-off-by: Uma Devika Reviewers: cedric, tasn, jpeg, raster, singh.amitesh Subscribers: tanwar.umesh07, yashu21985, cedric, jpeg Differential Revision: https://phab.enlightenment.org/D5000 Change-Id: Ic6a20827a912621d90a15367d4cb58ef16b0e01d --- diff --git a/src/lib/eolian/eo_parser.c b/src/lib/eolian/eo_parser.c index d8cbcb4..6762fc5 100644 --- a/src/lib/eolian/eo_parser.c +++ b/src/lib/eolian/eo_parser.c @@ -870,6 +870,7 @@ parse_typedef(Eo_Lexer *ls) pop_type(ls); check_next(ls, ';'); FILL_DOC(ls, def, doc); + pop_strbuf(ls); return def; } @@ -917,6 +918,7 @@ parse_variable(Eo_Lexer *ls, Eina_Bool global) } check_next(ls, ';'); FILL_DOC(ls, def, doc); + pop_strbuf(ls); return def; } diff --git a/src/modules/evas/engines/gl_common/evas_gl_api_ext.c b/src/modules/evas/engines/gl_common/evas_gl_api_ext.c index 52b268b..43f50c0 100644 --- a/src/modules/evas/engines/gl_common/evas_gl_api_ext.c +++ b/src/modules/evas/engines/gl_common/evas_gl_api_ext.c @@ -847,6 +847,8 @@ _evgl_api_gles2_ext_init(void *getproc, const char *glueexts) if (!glexts) { ERR("glGetString returned NULL! Something is very wrong..."); + eina_strbuf_free(sb); + eina_strbuf_free(sboff); return EINA_FALSE; } @@ -1129,25 +1131,25 @@ _evgl_api_gles1_ext_init(void *getproc, const char *glueexts) if (!(rsc=_evgl_tls_resource_get())) { ERR("Unable to initialize GLES1 extensions. Error retrieving tls"); - return EINA_FALSE; + goto error; } if ((dpy == EGL_NO_DISPLAY) || !rsc->current_ctx) { DBG("Unable to initialize GLES1 extensions. Engine not initialized"); - return EINA_FALSE; + goto error; } if (!eglQueryContext(dpy, rsc->current_ctx->context, EGL_CONTEXT_CLIENT_VERSION, &context_version)) { ERR("Unable to initialize GLES1 extensions. eglQueryContext failed 0x%x", eglGetError()); - return EINA_FALSE; + goto error; } if (context_version != EVAS_GL_GLES_1_X) { DBG("GLESv1 context not bound"); - return EINA_FALSE; + goto error; } #endif @@ -1156,7 +1158,7 @@ _evgl_api_gles1_ext_init(void *getproc, const char *glueexts) if (!gles1_funcs || !gles1_funcs->glGetString) { ERR("Could not get address of glGetString in GLESv1 library!"); - return EINA_FALSE; + goto error; } glexts = (const char *) gles1_funcs->glGetString(GL_EXTENSIONS); @@ -1165,7 +1167,7 @@ _evgl_api_gles1_ext_init(void *getproc, const char *glueexts) if (!glexts) { ERR("GLESv1:glGetString(GL_EXTENSIONS) returned NULL!"); - return EINA_FALSE; + goto error; } ///////////////////////////////////////////////////////////////////////////////////////////////////// @@ -1354,6 +1356,10 @@ _evgl_api_gles1_ext_init(void *getproc, const char *glueexts) // GLESv1 version has been initialized! _evgl_api_ext_status |= EVASGL_API_GLES1_EXT_INITIALIZED; return EINA_TRUE; +error: + eina_strbuf_free(sb); + eina_strbuf_free(sboff); + return EINA_FALSE; } void @@ -1454,25 +1460,25 @@ _evgl_api_gles3_ext_init(void *getproc, const char *glueexts) if (!(rsc=_evgl_tls_resource_get())) { ERR("Unable to initialize GLES3 extensions. Error retrieving tls"); - return EINA_FALSE; + goto error; } if ((dpy == EGL_NO_DISPLAY) || !rsc->current_ctx) { DBG("Unable to initialize GLES3 extensions. Engine not initialized"); - return EINA_FALSE; + goto error; } if (!eglQueryContext(dpy, rsc->current_ctx->context, EGL_CONTEXT_CLIENT_VERSION, &context_version)) { ERR("Unable to initialize GLES3 extensions. eglQueryContext failed 0x%x", eglGetError()); - return EINA_FALSE; + goto error; } if (context_version != EVAS_GL_GLES_3_X) { DBG("GLESv3 context not bound"); - return EINA_FALSE; + goto error; } #endif @@ -1482,7 +1488,7 @@ _evgl_api_gles3_ext_init(void *getproc, const char *glueexts) if (!gles3_funcs || !gles3_funcs->glGetString) { ERR("Could not get address of glGetString in GLESv3 library!"); - return EINA_FALSE; + goto error; } glexts = (const char *) gles3_funcs->glGetString(GL_EXTENSIONS); @@ -1491,7 +1497,7 @@ _evgl_api_gles3_ext_init(void *getproc, const char *glueexts) if (!glexts) { ERR("GLESv3:glGetString(GL_EXTENSIONS) returned NULL!"); - return EINA_FALSE; + goto error; } ///////////////////////////////////////////////////////////////////////////////////////////////////// @@ -1679,6 +1685,10 @@ _evgl_api_gles3_ext_init(void *getproc, const char *glueexts) // GLESv3 version has been initialized! _evgl_api_ext_status |= EVASGL_API_GLES3_EXT_INITIALIZED; return EINA_TRUE; +error: + eina_strbuf_free(sb); + eina_strbuf_free(sboff); + return EINA_FALSE; } void diff --git a/src/tests/evas/evas_test_image.c b/src/tests/evas/evas_test_image.c index cfb0f94..8c358e3 100644 --- a/src/tests/evas/evas_test_image.c +++ b/src/tests/evas/evas_test_image.c @@ -395,6 +395,8 @@ START_TEST(evas_object_image_tgv_loader_data) evas_object_del(obj); evas_object_del(ref); + eina_strbuf_free(str); + evas_free(e); evas_shutdown(); }