diff options
author | Oleg Oshmyan <chortos@inbox.lv> | 2024-02-19 20:36:49 +0200 |
---|---|---|
committer | Oleg Oshmyan <chortos@inbox.lv> | 2024-02-19 20:48:49 +0200 |
commit | 3887c2113d92277249a69c59ede64f3027461bdf (patch) | |
tree | 312fe7ee43d1f3748fc149f6b6675fd326d5137f | |
parent | 58a8f09cccb4829239855791a305d1336d8ee773 (diff) | |
download | libass-3887c2113d92277249a69c59ede64f3027461bdf.tar.bz2 libass-3887c2113d92277249a69c59ede64f3027461bdf.tar.xz |
directwrite: fix outdated dealloc code that has become leaky
Regression in commit b6650bd51b4c471c32dd3977ca9416c0b35f6358:
fullnames and families are no longer allocated, so freeing them
is pointless, wherease extended_family is allocated in their stead
and yet is never freed.
Reported-by: @moi15moi
-rw-r--r-- | libass/ass_directwrite.c | 26 |
1 files changed, 2 insertions, 24 deletions
diff --git a/libass/ass_directwrite.c b/libass/ass_directwrite.c index d66ea5d..1c7a3f0 100644 --- a/libass/ass_directwrite.c +++ b/libass/ass_directwrite.c @@ -638,19 +638,8 @@ static void add_font_face(IDWriteFontFace *face, ASS_FontProvider *provider, ass_font_provider_add_font(provider, &meta, NULL, 0, font_priv); cleanup: - if (meta.families) { - for (int k = 0; k < meta.n_family; k++) - free(meta.families[k]); - free(meta.families); - } - - if (meta.fullnames) { - for (int k = 0; k < meta.n_fullname; k++) - free(meta.fullnames[k]); - free(meta.fullnames); - } - free(meta.postscript_name); + free(meta.extended_family); if (face) IDWriteFontFace_Release(face); @@ -828,19 +817,8 @@ static void add_font(IDWriteFont *font, IDWriteFontFamily *fontFamily, ass_font_provider_add_font(provider, &meta, NULL, 0, font_priv); cleanup: - if (meta.families) { - for (int k = 0; k < meta.n_family; k++) - free(meta.families[k]); - free(meta.families); - } - - if (meta.fullnames) { - for (int k = 0; k < meta.n_fullname; k++) - free(meta.fullnames[k]); - free(meta.fullnames); - } - free(meta.postscript_name); + free(meta.extended_family); if (font) IDWriteFont_Release(font); |