From 21f2f09df41391bc1f9f441a30a09abb9c0719f2 Mon Sep 17 00:00:00 2001 From: Sam Atkins Date: Thu, 2 Nov 2023 12:49:26 +0000 Subject: [PATCH] LibGfx: Remove bit casting in OpenType CBDT table after construction --- Userland/Libraries/LibGfx/Font/OpenType/Tables.cpp | 3 ++- Userland/Libraries/LibGfx/Font/OpenType/Tables.h | 6 ++++-- 2 files changed, 6 insertions(+), 3 deletions(-) diff --git a/Userland/Libraries/LibGfx/Font/OpenType/Tables.cpp b/Userland/Libraries/LibGfx/Font/OpenType/Tables.cpp index 7c9f6599e2..184590851d 100644 --- a/Userland/Libraries/LibGfx/Font/OpenType/Tables.cpp +++ b/Userland/Libraries/LibGfx/Font/OpenType/Tables.cpp @@ -506,7 +506,8 @@ ErrorOr CBDT::from_slice(ReadonlyBytes slice) { if (slice.size() < sizeof(CbdtHeader)) return Error::from_string_literal("CBDT table too small"); - return CBDT { slice }; + auto const& header = *bit_cast(slice.data()); + return CBDT { slice, header }; } ErrorOr GPOS::from_slice(ReadonlyBytes slice) diff --git a/Userland/Libraries/LibGfx/Font/OpenType/Tables.h b/Userland/Libraries/LibGfx/Font/OpenType/Tables.h index f7a83a339f..0f5f619f66 100644 --- a/Userland/Libraries/LibGfx/Font/OpenType/Tables.h +++ b/Userland/Libraries/LibGfx/Font/OpenType/Tables.h @@ -586,15 +586,17 @@ public: static ErrorOr from_slice(ReadonlyBytes); ReadonlyBytes bytes() const { return m_slice; } - CbdtHeader const& header() const { return *bit_cast(m_slice.data()); } + CbdtHeader const& header() const { return m_header; } private: - explicit CBDT(ReadonlyBytes slice) + explicit CBDT(ReadonlyBytes slice, CbdtHeader const& header) : m_slice(slice) + , m_header(header) { } ReadonlyBytes m_slice; + CbdtHeader const& m_header; }; // https://learn.microsoft.com/en-us/typography/opentype/spec/chapter2#feature-list-table