Zhiyi Zhang (@zhiyi) commented about dlls/win32u/sysparams.c:
memset( &devmode->dmDriverExtra, 0, devmode->dmSize - offsetof(DEVMODEW, dmDriverExtra) ); if (index == ENUM_REGISTRY_SETTINGS) ret = read_registry_settings( adapter_path, devmode );
- else if (index != ENUM_CURRENT_SETTINGS) ret = user_driver->pEnumDisplaySettingsEx( device_name, index, devmode, flags );
- /* if EDS_ROTATEDMODE is not specified, enumerate modes with the same display orientation as current */
- else if (index != ENUM_CURRENT_SETTINGS && (flags & EDS_ROTATEDMODE)) ret = TRUE; else ret = user_driver->pGetCurrentDisplaySettings( device_name, devmode );
It's probably alright, but with this patch, we're touching the user-specified devmode when index > available modes. And maybe it's time to change devmode to be some thing more appropriate, like a current_mode/registry_mode pointer instead of devmode or mode everywhere.