From acfb9e6cdc0546a95df52afb779c41c12c632976 Mon Sep 17 00:00:00 2001 From: spfenwick Date: Sat, 2 May 2026 20:03:35 +1200 Subject: [PATCH] Address Review Comment: clear dangling pointers when miniData freed --- lib/EpdFont/SdCardFont.cpp | 15 +++++++++++++++ 1 file changed, 15 insertions(+) diff --git a/lib/EpdFont/SdCardFont.cpp b/lib/EpdFont/SdCardFont.cpp index 23a90233..62bd8469 100644 --- a/lib/EpdFont/SdCardFont.cpp +++ b/lib/EpdFont/SdCardFont.cpp @@ -52,6 +52,21 @@ void SdCardFont::freeStyleMiniData(PerStyle& s) { s.miniIntervalCount = 0; s.miniGlyphCount = 0; s.miniMode = PerStyle::MiniMode::NONE; + // Clear dangling pointers in miniData and stubData (kern data points to freed mini arrays) + s.miniData.kernLeftClasses = nullptr; + s.miniData.kernRightClasses = nullptr; + s.miniData.kernMatrix = nullptr; + s.miniData.kernLeftEntryCount = 0; + s.miniData.kernRightEntryCount = 0; + s.miniData.kernLeftClassCount = 0; + s.miniData.kernRightClassCount = 0; + s.stubData.kernLeftClasses = nullptr; + s.stubData.kernRightClasses = nullptr; + s.stubData.kernMatrix = nullptr; + s.stubData.kernLeftEntryCount = 0; + s.stubData.kernRightEntryCount = 0; + s.stubData.kernLeftClassCount = 0; + s.stubData.kernRightClassCount = 0; // NOTE: reportedMissCount is intentionally NOT reset here. The merge path // calls freeStyleMiniData() to swap mini buffers, and resetting the miss // tracker every paragraph would re-spam the log for the same 4 missing cps.