From 8336d53cff9f78bb48f1ba4aa670c1d8d81d1808 Mon Sep 17 00:00:00 2001 From: Alexei Podtelezhnikov Date: Sat, 12 Jun 2021 22:33:08 -0400 Subject: [PATCH] [type42] Fix new memory leak. We need to inverse inheritance of FT_GlyphSlot_Internal so that we have a chance to free the rendered bitmap from the parent slot. * src/type42/t42objs.c (T42_GlyphSlot_Init): Remove the internal parts of the child `ttslot' and replace it with the parent structure. (T42_GlyphSlot_Done): Updated accordingly. --- ChangeLog | 11 +++++++++++ src/type42/t42objs.c | 8 ++++---- 2 files changed, 15 insertions(+), 4 deletions(-) diff --git a/ChangeLog b/ChangeLog index 07c9a7819..80878ef10 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,14 @@ +2021-06-12 Alexei Podtelezhnikov + + [type42] Fix new memory leak. + + We need to inverse inheritance of FT_GlyphSlot_Internal so that we + have a chance to free the rendered bitmap from the parent slot. + + * src/type42/t42objs.c (T42_GlyphSlot_Init): Remove the internal parts + of the child `ttslot' and replace it with the parent structure. + (T42_GlyphSlot_Done): Updated accordingly. + 2021-06-12 Werner Lemberg [psaux] Fix another assertion. diff --git a/src/type42/t42objs.c b/src/type42/t42objs.c index dd23e73fa..c32dc5bee 100644 --- a/src/type42/t42objs.c +++ b/src/type42/t42objs.c @@ -600,9 +600,9 @@ } /* share the loader so that the autohinter can see it */ - FT_GlyphLoader_Done( t42slot->internal->loader ); - FT_FREE( t42slot->internal ); - t42slot->internal = slot->ttslot->internal; + FT_GlyphLoader_Done( slot->ttslot->internal->loader ); + FT_FREE( slot->ttslot->internal ); + slot->ttslot->internal = t42slot->internal; return error; } @@ -614,8 +614,8 @@ T42_GlyphSlot slot = (T42_GlyphSlot)t42slot; + slot->ttslot->internal = NULL; FT_Done_GlyphSlot( slot->ttslot ); - t42slot->internal = NULL; }