[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)); ZeroMemory(&Item, sizeof(LVITEM));
Item.mask = LVIF_PARAM; Item.mask = LVIF_PARAM;
Item.iItem = iSelected; Item.iItem = iSelected;
Item.iSubItem = 0;
if (!ListView_GetItem(hwndListView, &Item)) if (!ListView_GetItem(hwndListView, &Item))
return FALSE; return FALSE;
@ -170,7 +169,6 @@ DeleteUserProfile(
ZeroMemory(&Item, sizeof(LVITEM)); ZeroMemory(&Item, sizeof(LVITEM));
Item.mask = LVIF_PARAM; Item.mask = LVIF_PARAM;
Item.iItem = iSelected; Item.iItem = iSelected;
Item.iSubItem = 0;
if (!ListView_GetItem(hwndListView, &Item)) if (!ListView_GetItem(hwndListView, &Item))
return FALSE; return FALSE;
@ -253,7 +251,6 @@ CopyUserProfile(
ZeroMemory(&Item, sizeof(LVITEM)); ZeroMemory(&Item, sizeof(LVITEM));
Item.mask = LVIF_PARAM; Item.mask = LVIF_PARAM;
Item.iItem = iSelected; Item.iItem = iSelected;
Item.iSubItem = 0;
if (!ListView_GetItem(hwndListView, &Item)) if (!ListView_GetItem(hwndListView, &Item))
return FALSE; return FALSE;
@ -645,9 +642,9 @@ UpdateButtonState(
iSelected = ListView_GetNextItem(hwndListView, -1, LVNI_SELECTED); iSelected = ListView_GetNextItem(hwndListView, -1, LVNI_SELECTED);
if (iSelected != -1) if (iSelected != -1)
{ {
ZeroMemory(&Item, sizeof(LVITEM));
Item.mask = LVIF_PARAM; Item.mask = LVIF_PARAM;
Item.iItem = iSelected; Item.iItem = iSelected;
Item.iSubItem = 0;
if (ListView_GetItem(hwndListView, &Item)) if (ListView_GetItem(hwndListView, &Item))
{ {
if (Item.lParam != 0) if (Item.lParam != 0)
@ -804,48 +801,36 @@ OnInitUserProfileDialog(HWND hwndDlg)
AddUserProfiles(hwndDlg, GetDlgItem(hwndDlg, IDC_USERPROFILE_LIST), bAdmin); 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 static
VOID VOID
OnNotify( OnNotify(
_In_ HWND hwndDlg, _In_ HWND hwndDlg,
_In_ NMHDR *nmhdr) _In_ NMHDR *nmhdr)
{ {
LPNMLISTVIEW pNMLV;
if (nmhdr->idFrom == IDC_USERACCOUNT_LINK && nmhdr->code == NM_CLICK) if (nmhdr->idFrom == IDC_USERACCOUNT_LINK && nmhdr->code == NM_CLICK)
{ {
ShellExecuteW(hwndDlg, NULL, L"usrmgr.cpl", NULL, NULL, 0); ShellExecuteW(hwndDlg, NULL, L"usrmgr.cpl", NULL, NULL, 0);
} }
else if (nmhdr->idFrom == IDC_USERPROFILE_LIST) else if (nmhdr->idFrom == IDC_USERPROFILE_LIST)
{ {
if (nmhdr->code == LVN_ITEMCHANGED) switch(nmhdr->code)
UpdateButtonState(hwndDlg, nmhdr->hwndFrom); {
else if (nmhdr->code == NM_DBLCLK) case LVN_ITEMCHANGED:
ChangeUserProfileType(hwndDlg); 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;
}
} }
} }
@ -863,10 +848,6 @@ UserProfileDlgProc(HWND hwndDlg,
OnInitUserProfileDialog(hwndDlg); OnInitUserProfileDialog(hwndDlg);
return TRUE; return TRUE;
case WM_DESTROY:
OnDestroy(hwndDlg);
break;
case WM_COMMAND: case WM_COMMAND:
switch (LOWORD(wParam)) switch (LOWORD(wParam))
{ {