Win8ScreenDriver::applyNewScreenProperties() (desktop/Win8ScreenDriver.cpp)
leaves m_drvImpl=null when the Win8ScreenDriverImpl constructor throws.
Five methods dereference m_drvImpl without null checks:
executeDetection() (line 58), getScreenBuffer() (79), grabFb() (85),
getScreenPropertiesChanged() (91), getCursorPosition() (135).
The file header says "This member must be always guaranteed non zero" -
applyNewScreenProperties() violates this on any DXGI init failure
(GPU reset, display hotplug, RDP sessions, hybrid-GPU laptops).
Attached PoC reproduces: applyNewScreenProperties() returns False,
m_drvImpl is None, executeDetection() crashes with AttributeError.
Fix: re-throw exception or keep m_drvImpl at a working fallback.
Version: 2.8.87.