# HG changeset patch # User Pantxo Diribarne # Date 1586613456 -7200 # Node ID 11d66485fc192dcac5960d215fec02e069606752 # Parent 9a1b6400c706d565ef425e6f3b7daad32d0a1dfd Correctly cache fonts in ft_manager (bug #58150) * ft-text-renderer.cc (ft_manager::do_get_font): Call FT_Reference_Face to increment the FT_Face ref count otherwise any call to FT_Done will make the object be freed and un-cached. (ft_manager::do_font_destroyed): Call FT_Done_Face to decrement the FT_Face ref count. diff -r 9a1b6400c706 -r 11d66485fc19 libinterp/corefcn/ft-text-renderer.cc --- a/libinterp/corefcn/ft-text-renderer.cc Sat Apr 11 20:46:24 2020 +0200 +++ b/libinterp/corefcn/ft-text-renderer.cc Sat Apr 11 15:57:36 2020 +0200 @@ -398,8 +398,8 @@ retval->generic.finalizer = ft_face_destroyed; // Insert loaded font into the cache. - - cache[key] = retval; + if (FT_Reference_Face (retval) == 0) + cache[key] = retval; } #endif } @@ -416,6 +416,7 @@ cache.erase (*pkey); delete pkey; face->generic.data = nullptr; + FT_Done_Face (face); } }