[SYSDM] User Profiles fix of OnDestroy (CORE-16921) (#2614)

This commit is contained in:
Kyle Katarn 2020-04-27 18:25:19 +02:00 committed by GitHub
parent 68f9fd2f5d
commit f949e256b5
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23

View file

@ -125,7 +125,6 @@ ChangeUserProfileType(
ZeroMemory(&Item, sizeof(LVITEM));
Item.mask = LVIF_PARAM;
Item.iItem = iSelected;
Item.iSubItem = 0;
if (!ListView_GetItem(hwndListView, &Item))
return FALSE;
@ -170,7 +169,6 @@ DeleteUserProfile(
ZeroMemory(&Item, sizeof(LVITEM));
Item.mask = LVIF_PARAM;
Item.iItem = iSelected;
Item.iSubItem = 0;
if (!ListView_GetItem(hwndListView, &Item))
return FALSE;
@ -253,7 +251,6 @@ CopyUserProfile(
ZeroMemory(&Item, sizeof(LVITEM));
Item.mask = LVIF_PARAM;
Item.iItem = iSelected;
Item.iSubItem = 0;
if (!ListView_GetItem(hwndListView, &Item))
return FALSE;
@ -645,9 +642,9 @@ UpdateButtonState(
iSelected = ListView_GetNextItem(hwndListView, -1, LVNI_SELECTED);
if (iSelected != -1)
{
ZeroMemory(&Item, sizeof(LVITEM));
Item.mask = LVIF_PARAM;
Item.iItem = iSelected;
Item.iSubItem = 0;
if (ListView_GetItem(hwndListView, &Item))
{
if (Item.lParam != 0)
@ -804,48 +801,36 @@ OnInitUserProfileDialog(HWND hwndDlg)
AddUserProfiles(hwndDlg, GetDlgItem(hwndDlg, IDC_USERPROFILE_LIST), bAdmin);
}
static
VOID
OnDestroy(
_In_ HWND hwndDlg)
{
HWND hwndList;
INT nItems, i;
LVITEM Item;
hwndList = GetDlgItem(hwndDlg, IDC_USERPROFILE_LIST);
nItems = ListView_GetItemCount(hwndList);
for (i = 0; i < nItems; i++)
{
Item.iItem = i;
Item.iSubItem = 0;
if (ListView_GetItem(hwndList, &Item))
{
if (Item.lParam != 0)
HeapFree(GetProcessHeap(), 0, (PVOID)Item.lParam);
}
}
}
static
VOID
OnNotify(
_In_ HWND hwndDlg,
_In_ NMHDR *nmhdr)
{
LPNMLISTVIEW pNMLV;
if (nmhdr->idFrom == IDC_USERACCOUNT_LINK && nmhdr->code == NM_CLICK)
{
ShellExecuteW(hwndDlg, NULL, L"usrmgr.cpl", NULL, NULL, 0);
}
else if (nmhdr->idFrom == IDC_USERPROFILE_LIST)
{
if (nmhdr->code == LVN_ITEMCHANGED)
UpdateButtonState(hwndDlg, nmhdr->hwndFrom);
else if (nmhdr->code == NM_DBLCLK)
ChangeUserProfileType(hwndDlg);
switch(nmhdr->code)
{
case LVN_ITEMCHANGED:
UpdateButtonState(hwndDlg, nmhdr->hwndFrom);
break;
case NM_DBLCLK:
ChangeUserProfileType(hwndDlg);
break;
case LVN_DELETEITEM:
pNMLV = (LPNMLISTVIEW)nmhdr;
if (pNMLV->lParam != 0)
HeapFree(GetProcessHeap(), 0, (LPVOID)pNMLV->lParam);
break;
}
}
}
@ -862,11 +847,7 @@ UserProfileDlgProc(HWND hwndDlg,
case WM_INITDIALOG:
OnInitUserProfileDialog(hwndDlg);
return TRUE;
case WM_DESTROY:
OnDestroy(hwndDlg);
break;
case WM_COMMAND:
switch (LOWORD(wParam))
{