From a62500505d57a4dc2c77bbbd7d0bfb832a5aa857 Mon Sep 17 00:00:00 2001 From: Tim Wiederhake Date: Sat, 16 Mar 2024 13:07:19 +0100 Subject: Fix memory leak in FindFontSet Valgrind results before: definitely lost: 800 bytes in 23 blocks indirectly lost: 872 bytes in 6 blocks possibly lost: 0 bytes in 0 blocks still reachable: 991,316 bytes in 1,795 blocks suppressed: 0 bytes in 0 blocks Valgrind results after: definitely lost: 200 bytes in 17 blocks indirectly lost: 0 bytes in 0 blocks possibly lost: 0 bytes in 0 blocks still reachable: 918,812 bytes in 994 blocks suppressed: 0 bytes in 0 blocks Signed-off-by: Tim Wiederhake Part-of: --- src/util.c | 19 +++++++++++++++++++ 1 file changed, 19 insertions(+) (limited to 'src/util.c') diff --git a/src/util.c b/src/util.c index 9a04ac1..52f6148 100644 --- a/src/util.c +++ b/src/util.c @@ -607,6 +607,7 @@ FindFontSet(MyFont *font, const char *fontname) twmVerbose("font for charset %s is lacking.", missing_charset_list_return[i]); } + XFreeStringList(missing_charset_list_return); } font_extents = XExtentsOfFontSet(font->fontset); @@ -672,6 +673,24 @@ GetFont(MyFont *font) } } +void +DestroyFont(MyFont *font) +{ + if (!font) { + return; + } + + if (font->fontset) { + XFreeFontSet(dpy, font->fontset); + font->fontset = NULL; + } + + if (font->font) { + XFreeFont(dpy, font->font); + font->font = NULL; + } +} + int MyFont_TextWidth(MyFont *font, const char *string, int len) { -- cgit v1.2.3