From aa8b60da150e72f0b2956b6913f0982fd9d03da6 Mon Sep 17 00:00:00 2001 From: Jonathan G Rennison Date: Sun, 11 Jun 2023 16:48:01 +0100 Subject: [PATCH] Crashlog: Fix crash log when font caches not initialised --- src/crashlog.cpp | 17 +++++++++++++---- 1 file changed, 13 insertions(+), 4 deletions(-) diff --git a/src/crashlog.cpp b/src/crashlog.cpp index 1821bb9d1a..b37d864976 100644 --- a/src/crashlog.cpp +++ b/src/crashlog.cpp @@ -223,16 +223,25 @@ char *CrashLog::LogConfiguration(char *buffer, const char *last) const pathfinder_name(_settings_game.pf.pathfinder_for_trains), pathfinder_name(_settings_game.pf.pathfinder_for_roadvehs), pathfinder_name(_settings_game.pf.pathfinder_for_ships) ); + auto log_font = [&](FontSize fs) -> const char * { + FontCache *fc = FontCache::Get(fs); + if (fc != nullptr) { + return fc->GetFontName(); + } else { + return "[NULL]"; + } + }; + buffer += seprintf(buffer, last, "Fonts:\n" " Small: %s\n" " Medium: %s\n" " Large: %s\n" " Mono: %s\n\n", - FontCache::Get(FS_SMALL)->GetFontName(), - FontCache::Get(FS_NORMAL)->GetFontName(), - FontCache::Get(FS_LARGE)->GetFontName(), - FontCache::Get(FS_MONO)->GetFontName() + log_font(FS_SMALL), + log_font(FS_NORMAL), + log_font(FS_LARGE), + log_font(FS_MONO) ); buffer += seprintf(buffer, last, "Map size: 0x%X (%u x %u)%s\n\n", MapSize(), MapSizeX(), MapSizeY(), (!_m || !_me) ? ", NO MAP ALLOCATED" : "");