windows: Fix crash in for Windows versions < 17763

In Windows versions < 17763, `GetProcAddress("#132")` from `uxtheme.dll`
also returns a non-null pointer. However, the function does not match
the expected `extern "system" fn() -> bool` prototype, which causes a
crash when it is called.

This fix ensures compatibility by adding proper checks to prevent such
crashes on older Windows versions.
This commit is contained in:
Varphone Wong 2025-05-14 20:31:48 +08:00 committed by GitHub
parent b5921d89f2
commit ed4ebd4242
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
2 changed files with 7 additions and 0 deletions

View file

@ -246,3 +246,4 @@ changelog entry.
- On macOS, fixed the scancode conversion for audio volume keys.
- On macOS, fixed the scancode conversion for `IntlBackslash`.
- On macOS, fixed redundant `SurfaceResized` event at window creation.
- On Windows, fixed crash in should_apps_use_dark_mode() for Windows versions < 17763.

View file

@ -133,6 +133,12 @@ fn should_apps_use_dark_mode() -> bool {
LazyLock::new(|| unsafe {
const UXTHEME_SHOULDAPPSUSEDARKMODE_ORDINAL: PCSTR = 132 as PCSTR;
// We won't try to do anything for windows versions < 17763
// (Windows 10 October 2018 update)
if !*DARK_MODE_SUPPORTED {
return None;
}
let module = LoadLibraryA(c"uxtheme.dll".as_ptr().cast());
if module.is_null() {