From 6539bc7788f71d1265c9242f51400b4f713752ce Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jean-Philippe=20Andr=C3=A9?= Date: Wed, 9 Jan 2019 12:46:38 -0500 Subject: [PATCH] textblock: Fix crash with filters Summary: A crash could happen on a bad call to free() context_dup() returns a newly malloc'ed context if passed NULL (this seems dubious to me, why not calloc?). @fix Test Plan: Add an empty efl.ui.text object Set markup text as "Hello" Reviewers: cedric, segfaultxavi, Jaehyun, herdsman, zmike Reviewed By: zmike Subscribers: zmike, cedric, #reviewers, #committers Tags: #efl Differential Revision: https://phab.enlightenment.org/D7368 --- src/lib/evas/canvas/evas_object_textblock.c | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/lib/evas/canvas/evas_object_textblock.c b/src/lib/evas/canvas/evas_object_textblock.c index 339d153f83..b33cb6f5eb 100644 --- a/src/lib/evas/canvas/evas_object_textblock.c +++ b/src/lib/evas/canvas/evas_object_textblock.c @@ -2842,7 +2842,8 @@ _format_dup(Evas_Object *eo_obj, const Evas_Object_Textblock_Format *fmt) fmt2->gfx_filter = malloc(sizeof(*fmt2->gfx_filter)); memcpy(fmt2->gfx_filter, fmt->gfx_filter, sizeof(*fmt->gfx_filter)); fmt2->gfx_filter->name = eina_stringshare_ref(fmt->gfx_filter->name); - fmt2->gfx_filter->dc = ENFN->context_dup(ENC, fmt->gfx_filter->dc); + if (fmt->gfx_filter->dc) + fmt2->gfx_filter->dc = ENFN->context_dup(ENC, fmt->gfx_filter->dc); } return fmt2;