[SETUPAPI]
authorEric Kohl <eric.kohl@reactos.org>
Mon, 13 Oct 2014 18:31:55 +0000 (18:31 +0000)
committerEric Kohl <eric.kohl@reactos.org>
Mon, 13 Oct 2014 18:31:55 +0000 (18:31 +0000)
Load a property sheet extension dll only once, otherwise we might leak module handles.

svn path=/trunk/; revision=64734

reactos/dll/win32/setupapi/devclass.c

index 2bdd6e9..60c92fe 100644 (file)
@@ -1272,14 +1272,22 @@ SetupDiGetClassDevPropertySheetsW(
         if (DeviceInfoData)
         {
             struct DeviceInfo *devInfo = (struct DeviceInfo *)DeviceInfoData->Reserved;
-            devInfo->hmodDevicePropPageProvider = hModule;
-            devInfo->pDevicePropPageProvider = pPropPageProvider;
+
+            if (devInfo->hmodDevicePropPageProvider == NULL)
+            {
+                devInfo->hmodDevicePropPageProvider = hModule;
+                devInfo->pDevicePropPageProvider = pPropPageProvider;
+            }
         }
         else
         {
             struct DeviceInfoSet *devInfoSet = (struct DeviceInfoSet *)DeviceInfoSet;
-            devInfoSet->hmodClassPropPageProvider = hModule;
-            devInfoSet->pClassPropPageProvider = pPropPageProvider;
+
+            if (devInfoSet->hmodClassPropPageProvider == NULL)
+            {
+                devInfoSet->hmodClassPropPageProvider = hModule;
+                devInfoSet->pClassPropPageProvider = pPropPageProvider;
+            }
         }
 
         InitialNumberOfPages = PropertySheetHeader->nPages;