From 6038318851aa9c776c7679e97dfda4d5b191ef1a Mon Sep 17 00:00:00 2001 From: "Carsten Haitzler (Rasterman)" Date: Mon, 25 Aug 2014 13:18:51 +0900 Subject: [PATCH] evas font draw - fix possible custout rect leak found by coverity fixes CID 1039477 --- src/lib/evas/common/evas_font.h | 2 +- src/lib/evas/common/evas_font_draw.c | 4 ++-- src/lib/evas/common/evas_pipe.c | 2 +- 3 files changed, 4 insertions(+), 4 deletions(-) diff --git a/src/lib/evas/common/evas_font.h b/src/lib/evas/common/evas_font.h index 14415890fc..5017262078 100644 --- a/src/lib/evas/common/evas_font.h +++ b/src/lib/evas/common/evas_font.h @@ -36,7 +36,7 @@ EAPI FT_UInt evas_common_get_char_index (RGBA_Font_Int* fi, EAPI void evas_common_font_draw_init (void); EAPI void evas_common_font_draw_prepare (Evas_Text_Props *text_props); EAPI void evas_common_font_draw_do(const Cutout_Rects *reuse, const Eina_Rectangle *clip, RGBA_Gfx_Func func, RGBA_Image *dst, RGBA_Draw_Context *dc, int x, int y, const Evas_Text_Props *text_props); -EAPI Eina_Bool evas_common_font_draw_prepare_cutout(Cutout_Rects *reuse, RGBA_Image *dst, RGBA_Draw_Context *dc, RGBA_Gfx_Func *func); +EAPI Eina_Bool evas_common_font_draw_prepare_cutout(Cutout_Rects **reuse, RGBA_Image *dst, RGBA_Draw_Context *dc, RGBA_Gfx_Func *func); /* load */ EAPI void evas_common_font_dpi_set (int dpi); diff --git a/src/lib/evas/common/evas_font_draw.c b/src/lib/evas/common/evas_font_draw.c index 1e88b479d2..7ff2f23233 100644 --- a/src/lib/evas/common/evas_font_draw.c +++ b/src/lib/evas/common/evas_font_draw.c @@ -359,7 +359,7 @@ evas_common_font_draw_do(const Cutout_Rects *reuse, const Eina_Rectangle *clip, } EAPI Eina_Bool -evas_common_font_draw_prepare_cutout(Cutout_Rects *reuse, RGBA_Image *dst, RGBA_Draw_Context *dc, RGBA_Gfx_Func *func) +evas_common_font_draw_prepare_cutout(Cutout_Rects **reuse, RGBA_Image *dst, RGBA_Draw_Context *dc, RGBA_Gfx_Func *func) { int im_w, im_h; @@ -374,7 +374,7 @@ evas_common_font_draw_prepare_cutout(Cutout_Rects *reuse, RGBA_Image *dst, RGBA_ if (dc->cutout.rects) { - reuse = evas_common_draw_context_apply_cutouts(dc, reuse); + *reuse = evas_common_draw_context_apply_cutouts(dc, *reuse); } return EINA_TRUE; diff --git a/src/lib/evas/common/evas_pipe.c b/src/lib/evas/common/evas_pipe.c index f89db7b6e5..0d57119b69 100644 --- a/src/lib/evas/common/evas_pipe.c +++ b/src/lib/evas/common/evas_pipe.c @@ -442,7 +442,7 @@ evas_common_pipe_text_draw_prepare(void *data, RGBA_Image *dst, RGBA_Pipe_Op *op Eina_Bool r; recycle = evas_pipe_cutout_rects_pop(info); - r = evas_common_font_draw_prepare_cutout(recycle, dst, &(op->context), + r = evas_common_font_draw_prepare_cutout(&recycle, dst, &(op->context), &(op->op.text.func)); if (recycle->active) op->rects = recycle; else evas_pipe_cutout_rects_push(info, recycle);