From 20067ed087c146557fb0e46a6f49bb522fbcbbf8 Mon Sep 17 00:00:00 2001 From: Tobias Jakobi Date: Mon, 24 Feb 2014 21:12:12 +0100 Subject: [PATCH] video_omap: plug memory leak --- gfx/omap_gfx.c | 12 ++++++++---- 1 file changed, 8 insertions(+), 4 deletions(-) diff --git a/gfx/omap_gfx.c b/gfx/omap_gfx.c index 030cf81400..fe72eaa278 100644 --- a/gfx/omap_gfx.c +++ b/gfx/omap_gfx.c @@ -698,6 +698,7 @@ static void omap_gfx_free(void *data) { if (!vid) return; omapfb_free(vid->omap); + free(vid->omap); if (vid->font) vid->font_driver->free(vid->font); @@ -791,17 +792,17 @@ static void *omap_gfx_init(const video_info_t *video, const input_driver_t **inp if (!vid) return NULL; vid->omap = calloc(1, sizeof(omapfb_data_t)); - if (!vid->omap) return NULL; + if (!vid->omap) goto fail; vid->bytes_per_pixel = video->rgb32 ? 4 : 2; if (omapfb_init(vid->omap, vid->bytes_per_pixel) != 0) { - goto fail; + goto fail_omapfb; } if (omapfb_backup_state(vid->omap) != 0 || omapfb_alloc_mem(vid->omap) != 0 || - omapfb_mmap(vid->omap) != 0) goto fail; + omapfb_mmap(vid->omap) != 0) goto fail_omapfb; if (input && input_data) { *input = NULL; @@ -811,9 +812,12 @@ static void *omap_gfx_init(const video_info_t *video, const input_driver_t **inp return vid; +fail_omapfb: + omapfb_free(vid->omap); + free(vid->omap); fail: + free(vid); RARCH_ERR("video_omap: initialization failed\n"); - omap_gfx_free(vid); return NULL; }