changeset 32664:1b65ba91eeda stable

Stop memory leaks in class ft_manager. Multiple leaks in external library Fontconfig caused by creating resources and then not calling library routines to destroy them. * ft-text-renderer.cc (ft_manager::do_get_system_fonts): Call FcPatternDestroy, FcObjectSetDestroy, FcCharSetDestroy to free memory after use.
author Rik <rik@octave.org>
date Thu, 28 Dec 2023 16:00:11 -0800
parents bc244a5f113e
children 27bc8e663a2c
files libinterp/corefcn/ft-text-renderer.cc
diffstat 1 files changed, 7 insertions(+), 0 deletions(-) [+]
line wrap: on
line diff
--- a/libinterp/corefcn/ft-text-renderer.cc	Thu Dec 28 14:06:19 2023 -0800
+++ b/libinterp/corefcn/ft-text-renderer.cc	Thu Dec 28 16:00:11 2023 -0800
@@ -260,8 +260,15 @@
             font_map.assign ("weight", weights);
             font_map.assign ("suitable", suitable);
 
+            // Free up memory within libfontconfig 
             if (fs)
               FcFontSetDestroy (fs);
+            if (pat)  // Supposed to be freed by FcFontSetDestroy above, but isn't.
+              FcPatternDestroy (pat);
+            if (os)
+              FcObjectSetDestroy (os);
+            if (minimal_charset)
+              FcCharSetDestroy (minimal_charset);
           }
 #endif
       }