diff --git a/dlls/user32/driver.c b/dlls/user32/driver.c index 86d154329b129017ac49be6c9f71f7633c2fc4eb..6454f6532ce94fa7c2b4bc42b7689ec83d46c6c2 100644 --- a/dlls/user32/driver.c +++ b/dlls/user32/driver.c @@ -141,8 +141,11 @@ static const USER_DRIVER *load_driver(void) /* unload the graphics driver on process exit */ void USER_unload_driver(void) { + USER_DRIVER *prev; /* make sure we don't try to call the driver after it has been detached */ - USER_Driver = &null_driver; + prev = InterlockedExchangePointer( (void **)&USER_Driver, &null_driver ); + if (prev != &lazy_load_driver && prev != &null_driver) + HeapFree( GetProcessHeap(), 0, prev ); }