diff --git a/reactos/base/applications/msconfig/srvpage.c b/reactos/base/applications/msconfig/srvpage.c index 88b1d74be2c..4cfd62e6cc9 100644 --- a/reactos/base/applications/msconfig/srvpage.c +++ b/reactos/base/applications/msconfig/srvpage.c @@ -109,17 +109,22 @@ GetServices ( void ) /* reserve memory for service info array */ pServiceStatus = HeapAlloc(GetProcessHeap(), 0, BytesNeeded); if (!pServiceStatus) + { + CloseServiceHandle(ScHandle); return; + } /* fill array with service info */ if (EnumServicesStatusEx(ScHandle, SC_ENUM_PROCESS_INFO, SERVICE_WIN32, SERVICE_STATE_ALL, (LPBYTE)pServiceStatus, BytesNeeded, &BytesNeeded, &NumServices, &ResumeHandle, 0) == 0) { HeapFree(GetProcessHeap(), 0, pServiceStatus); + CloseServiceHandle(ScHandle); return; } } else /* exit on failure */ { + CloseServiceHandle(ScHandle); return; } } @@ -127,7 +132,11 @@ GetServices ( void ) if (NumServices) { if (!pServiceStatus) + { + CloseServiceHandle(ScHandle); return; + } + for (Index = 0; Index < NumServices; Index++) { memset(&item, 0, sizeof(LV_ITEM)); diff --git a/reactos/base/applications/msconfig/startuppage.c b/reactos/base/applications/msconfig/startuppage.c index e14cb9da870..4d65a0fb12e 100644 --- a/reactos/base/applications/msconfig/startuppage.c +++ b/reactos/base/applications/msconfig/startuppage.c @@ -137,7 +137,7 @@ GetDisabledAutostartEntriesFromRegistry (TCHAR * szBasePath) HeapFree(GetProcessHeap(), 0, Data); } } - RegCloseKey(hKey); + RegCloseKey(hKey); } } @@ -199,8 +199,8 @@ GetAutostartEntriesFromRegistry ( HKEY hRootKey, TCHAR* KeyName ) item.pszText = Path; item.iSubItem = 2; SendMessage(hStartupListCtrl, LVM_SETITEMTEXT, item.iItem, (LPARAM) &item); - HeapFree(GetProcessHeap(), 0, Data); } + HeapFree(GetProcessHeap(), 0, Data); } } RegCloseKey(hKey);