[PATCH] check for hb_shape_full failure
authorCaolán McNamara <caolan.mcnamara@collabora.com>
Wed, 6 May 2026 14:37:30 +0000 (15:37 +0100)
committerRene Engelhard <rene@debian.org>
Sat, 6 Jun 2026 21:07:23 +0000 (23:07 +0200)
Signed-off-by: Caolán McNamara <caolan.mcnamara@collabora.com>
Change-Id: I5fafcb7d592fb4c9091cb2bab64cb6ac47462d71
Reviewed-on: https://gerrit.collaboraoffice.com/c/online/+/2102
Reviewed-by: Miklos Vajna <vmiklos@collabora.com>
(cherry picked from commit 22c19be8fae977a90f83a82d8acccd0b46c7cf20)
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/204946
Tested-by: Jenkins
Reviewed-by: Julien Nabet <serval2412@yahoo.fr>
Gbp-Pq: Name check-for-hb_shape_full-failure.diff

vcl/source/gdi/CommonSalLayout.cxx

index 7e2bcd6290cb7f72eb13ebb85c00e76b4893115a..c9f3f4f09a46d9f6761fb4be8bbd2be799a655ae 100644 (file)
@@ -465,9 +465,11 @@ bool GenericSalLayout::LayoutText(vcl::text::ImplLayoutArgs& rArgs, const SalLay
             // but there is no harm in always including it, HarfBuzz will
             // ignore unavailable shapers.
             const char*const pHbShapers[] = { "graphite2", "coretext_aat", "ot", "fallback", nullptr };
-            bool ok = hb_shape_full(pHbFont, pHbBuffer, maFeatures.data(), maFeatures.size(), pHbShapers);
-            assert(ok);
-            (void) ok;
+            if (!hb_shape_full(pHbFont, pHbBuffer, maFeatures.data(), maFeatures.size(), pHbShapers))
+            {
+                SAL_WARN("vcl.harfbuzz", "hb_shape_full failed");
+                hb_buffer_set_length(pHbBuffer, 0);
+            }
 
             int nRunGlyphCount = hb_buffer_get_length(pHbBuffer);
             hb_glyph_info_t *pHbGlyphInfos = hb_buffer_get_glyph_infos(pHbBuffer, nullptr);