From ea00dc4b49de4e339c154defdd4e1258ada0290a Mon Sep 17 00:00:00 2001
From: Rob Shearman <robertshearman@gmail.com>
Date: Sat, 10 Jan 2009 20:56:21 +0000
Subject: [PATCH] user32: Free allocated memory in USER_unload_driver.

---
 dlls/user32/driver.c | 5 ++++-
 1 file changed, 4 insertions(+), 1 deletion(-)

diff --git a/dlls/user32/driver.c b/dlls/user32/driver.c
index 86d154329b1..6454f6532ce 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 );
 }
 
 
-- 
GitLab