diff --git a/intern/ghost/intern/GHOST_WindowX11.cc b/intern/ghost/intern/GHOST_WindowX11.cc index 76968e7daa6..396cab78dd0 100644 --- a/intern/ghost/intern/GHOST_WindowX11.cc +++ b/intern/ghost/intern/GHOST_WindowX11.cc @@ -1542,17 +1542,22 @@ uint16_t GHOST_WindowX11::getDPIHint() if (resMan) { XrmDatabase xrdb = XrmGetStringDatabase(resMan); if (xrdb) { + int dpi = -1; char *type = nullptr; XrmValue val; int success = XrmGetResource(xrdb, "Xft.dpi", "Xft.Dpi", &type, &val); if (success && type) { if (STREQ(type, "String")) { - return atoi((char *)val.addr); + dpi = atoi((const char *)val.addr); } } + XrmDestroyDatabase(xrdb); + + if (dpi != -1) { + return dpi; + } } - XrmDestroyDatabase(xrdb); } /* Fallback to calculating DPI using X reported DPI, set using `xrandr --dpi`. */