vcl/unx/generic/gdi/cairotextrender.cxx | 9 +++++++++ 1 file changed, 9 insertions(+)
New commits: commit 9c47425041eb8c610da2963bdbaa707a6d3ea1f9 Author: Caolán McNamara <caol...@redhat.com> AuthorDate: Tue Apr 12 10:26:40 2022 +0100 Commit: Caolán McNamara <caol...@redhat.com> CommitDate: Tue Apr 12 20:50:39 2022 +0200 ofz#46632 Direct-leak Change-Id: I01fe4ae8907fb95708d54a39d1cc78d89b4d6e64 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/132893 Tested-by: Caolán McNamara <caol...@redhat.com> Reviewed-by: Caolán McNamara <caol...@redhat.com> diff --git a/vcl/unx/generic/gdi/cairotextrender.cxx b/vcl/unx/generic/gdi/cairotextrender.cxx index 9fd3ec8b4745..31c2a73c2eb4 100644 --- a/vcl/unx/generic/gdi/cairotextrender.cxx +++ b/vcl/unx/generic/gdi/cairotextrender.cxx @@ -152,6 +152,15 @@ void CairoTextRender::DrawTextLayout(const GenericSalLayout& rLayout, const SalG if (nWidth == 0 || nHeight == 0) return; + if (nHeight > SAL_MAX_UINT16) + { + // as seen with freetype 2.11.0, so cairo surface status is "fail" + // ("error occurred in libfreetype") and no further operations are + // executed, so this error then leads to later leaks + SAL_WARN("vcl", "rendering text would fail with height: " << nHeight); + return; + } + int nRatio = nWidth * 10 / nHeight; if (FreetypeFont::AlmostHorizontalDrainsRenderingPool(nRatio, rFSD)) return;