diff --git a/CHANGELOG.md b/CHANGELOG.md index feb48a3e..2851f7ba 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -58,6 +58,12 @@ ### Deprecated ### Removed ### Fixed + +* Crash when zooming in or out, with `dpi-aware=yes`, and the + monitor's DPI is 0 (this is true for, for example, nested Wayland + sessions, or in virtualized environments). + + ### Security ### Contributors diff --git a/terminal.c b/terminal.c index c027cfac..b684030e 100644 --- a/terminal.c +++ b/terminal.c @@ -878,10 +878,13 @@ get_font_dpi(const struct terminal *term) mon = &tll_front(term->wl->monitors); } - if (term_fractional_scaling(term)) - return mon != NULL ? mon->dpi.physical : 96.; - else - return mon != NULL ? mon->dpi.scaled : 96.; + const float monitor_dpi = mon != NULL + ? term_fractional_scaling(term) + ? mon->dpi.physical + : mon->dpi.scaled + : 96.; + + return monitor_dpi > 0. ? monitor_dpi : 96.; } static enum fcft_subpixel