fix: fix Font Preview crash if opened manually

This commit is contained in:
2026-07-18 10:21:22 +02:00
parent 7c8b7a5cf7
commit 796ed46d12
3 changed files with 17 additions and 3 deletions
+4 -1
View File
@@ -124,7 +124,10 @@ struct TrueTypeFont {
montauk::read(fd, data, 0, size);
montauk::close(fd);
if (!stbtt_InitFont(&info, data, stbtt_GetFontOffsetForIndex(data, 0))) {
// stbtt_GetFontOffsetForIndex returns -1 for non-font data; passing
// that into stbtt_InitFont makes it dereference data + (uint32)-1.
int off = stbtt_GetFontOffsetForIndex(data, 0);
if (off < 0 || !stbtt_InitFont(&info, data, off)) {
montauk::free(data);
data = nullptr;
return false;
+7 -2
View File
@@ -345,8 +345,13 @@ extern "C" void _start() {
g_preview_data = (uint8_t*)montauk::malloc(size);
if (g_preview_data) {
montauk::read(fd, g_preview_data, 0, size);
if (stbtt_InitFont(&g_preview_info, g_preview_data,
stbtt_GetFontOffsetForIndex(g_preview_data, 0))) {
// stbtt_GetFontOffsetForIndex returns -1 for anything that
// isn't a valid font (e.g. a directory or arbitrary file).
// Passing that -1 into stbtt_InitFont makes it read at
// data + (uint32)-1, faulting. Guard against it.
int off = stbtt_GetFontOffsetForIndex(g_preview_data, 0);
if (off >= 0 &&
stbtt_InitFont(&g_preview_info, g_preview_data, off)) {
g_load_ok = true;
}
}
+6
View File
@@ -6,3 +6,9 @@ icon = "font-viewer.svg"
[menu]
category = "Applications"
visible = false
[launch]
# Font Preview only opens an explicit font file; it has no use for a
# starting directory. Don't hand it home_dir when launched from the Apps
# folder (it would try to parse the directory path as a font).
pass_home_dir = false