Mercurial > octave
changeset 28206:11d66485fc19 stable
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.
author | Pantxo Diribarne <pantxo.diribarne@gmail.com> |
---|---|
date | Sat, 11 Apr 2020 15:57:36 +0200 |
parents | 9a1b6400c706 |
children | ab60e78d235c c3dd445fcc2f |
files | libinterp/corefcn/ft-text-renderer.cc |
diffstat | 1 files changed, 3 insertions(+), 2 deletions(-) [+] |
line wrap: on
line diff
--- 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); } }