mirror of
git://source.winehq.org/git/wine.git
synced 2024-10-31 12:19:49 +00:00
regedit: Use the heap_*() functions in treeview.c where possible.
Signed-off-by: Hugh McMaster <hugh.mcmaster@outlook.com> Signed-off-by: Alexandre Julliard <julliard@winehq.org>
This commit is contained in:
parent
e0a527ab43
commit
793ddc992c
1 changed files with 31 additions and 39 deletions
|
@ -51,7 +51,6 @@ static BOOL get_item_path(HWND hwndTV, HTREEITEM hItem, HKEY* phKey, LPWSTR* pKe
|
|||
{
|
||||
TVITEMW item;
|
||||
int maxChars, chars;
|
||||
LPWSTR newStr;
|
||||
HTREEITEM hParent;
|
||||
|
||||
item.mask = TVIF_PARAM;
|
||||
|
@ -82,10 +81,9 @@ static BOOL get_item_path(HWND hwndTV, HTREEITEM hItem, HKEY* phKey, LPWSTR* pKe
|
|||
*pPathLen += chars;
|
||||
break;
|
||||
}
|
||||
newStr = HeapReAlloc(GetProcessHeap(), 0, *pKeyPath, *pMaxChars * 2);
|
||||
if (!newStr) return FALSE;
|
||||
*pKeyPath = newStr;
|
||||
|
||||
*pMaxChars *= 2;
|
||||
*pKeyPath = heap_xrealloc(*pKeyPath, *pMaxChars);
|
||||
} while(TRUE);
|
||||
|
||||
return TRUE;
|
||||
|
@ -101,7 +99,7 @@ LPWSTR GetItemPath(HWND hwndTV, HTREEITEM hItem, HKEY* phRootKey)
|
|||
if (!hItem) return NULL;
|
||||
}
|
||||
|
||||
pathBuffer = HeapAlloc(GetProcessHeap(), 0, maxLen*sizeof(WCHAR));
|
||||
pathBuffer = heap_xalloc(maxLen * sizeof(WCHAR));
|
||||
if (!pathBuffer) return NULL;
|
||||
*pathBuffer = 0;
|
||||
if (!get_item_path(hwndTV, hItem, phRootKey, &pathBuffer, &pathLen, &maxLen)) return NULL;
|
||||
|
@ -118,10 +116,10 @@ static LPWSTR get_path_component(LPCWSTR *lplpKeyName) {
|
|||
lpPos++;
|
||||
if (*lpPos && lpPos == *lplpKeyName)
|
||||
return NULL;
|
||||
|
||||
len = lpPos+1-(*lplpKeyName);
|
||||
lpResult = HeapAlloc(GetProcessHeap(), 0, len * sizeof(WCHAR));
|
||||
if (!lpResult) /* that would be very odd */
|
||||
return NULL;
|
||||
lpResult = heap_xalloc(len * sizeof(WCHAR));
|
||||
|
||||
lstrcpynW(lpResult, *lplpKeyName, len);
|
||||
*lplpKeyName = *lpPos ? lpPos+1 : NULL;
|
||||
return lpResult;
|
||||
|
@ -155,7 +153,7 @@ HTREEITEM FindPathInTree(HWND hwndTV, LPCWSTR lpKeyName) {
|
|||
SendMessageW(hwndTV, TVM_EXPAND, TVE_EXPAND, (LPARAM)hItem );
|
||||
if (!lpKeyName)
|
||||
{
|
||||
HeapFree(GetProcessHeap(), 0, lpItemName);
|
||||
heap_free(lpItemName);
|
||||
return hItem;
|
||||
}
|
||||
hOldItem = hItem;
|
||||
|
@ -164,7 +162,7 @@ HTREEITEM FindPathInTree(HWND hwndTV, LPCWSTR lpKeyName) {
|
|||
}
|
||||
hItem = (HTREEITEM)SendMessageW(hwndTV, TVM_GETNEXTITEM, TVGN_NEXT, (LPARAM)hItem);
|
||||
}
|
||||
HeapFree(GetProcessHeap(), 0, lpItemName);
|
||||
heap_free(lpItemName);
|
||||
if (!hItem)
|
||||
return valid_path ? hOldItem : hRoot;
|
||||
}
|
||||
|
@ -239,20 +237,20 @@ static BOOL match_item(HWND hwndTV, HTREEITEM hItem, LPCWSTR sstring, int mode,
|
|||
return FALSE;
|
||||
|
||||
if (RegOpenKeyExW(hRoot, KeyPath, 0, KEY_READ, &hKey) != ERROR_SUCCESS) {
|
||||
HeapFree(GetProcessHeap(), 0, KeyPath);
|
||||
heap_free(KeyPath);
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
HeapFree(GetProcessHeap(), 0, KeyPath);
|
||||
heap_free(KeyPath);
|
||||
|
||||
if (ERROR_SUCCESS != RegQueryInfoKeyW(hKey, NULL, NULL, NULL, NULL, NULL, NULL, NULL, &lenNameMax, &lenValueMax, NULL, NULL))
|
||||
return FALSE;
|
||||
|
||||
lenName = ++lenNameMax;
|
||||
if (!(valName = HeapAlloc(GetProcessHeap(), 0, lenName * sizeof(valName[0]) )))
|
||||
return FALSE;
|
||||
valName = heap_xalloc(lenName * sizeof(WCHAR));
|
||||
|
||||
adjust = 0;
|
||||
|
||||
/* RegEnumValue won't return empty default value, so fake it when dealing with *row,
|
||||
which corresponds to list view rows, not value ids */
|
||||
if (ERROR_SUCCESS == RegEnumValueW(hKey, 0, valName, &lenName, NULL, NULL, NULL, NULL) && *valName)
|
||||
|
@ -270,8 +268,8 @@ static BOOL match_item(HWND hwndTV, HTREEITEM hItem, LPCWSTR sstring, int mode,
|
|||
|
||||
if (mode & SEARCH_VALUES) {
|
||||
if (match_string(valName, sstring, mode)) {
|
||||
HeapFree(GetProcessHeap(), 0, valName);
|
||||
HeapFree(GetProcessHeap(), 0, buffer);
|
||||
heap_free(valName);
|
||||
heap_free(buffer);
|
||||
RegCloseKey(hKey);
|
||||
*row = i+adjust;
|
||||
return TRUE;
|
||||
|
@ -280,16 +278,15 @@ static BOOL match_item(HWND hwndTV, HTREEITEM hItem, LPCWSTR sstring, int mode,
|
|||
|
||||
if ((mode & SEARCH_CONTENT) && (type == REG_EXPAND_SZ || type == REG_SZ)) {
|
||||
if (!buffer)
|
||||
buffer = HeapAlloc(GetProcessHeap(), 0, lenValueMax);
|
||||
if (!buffer)
|
||||
break;
|
||||
buffer = heap_xalloc(lenValueMax);
|
||||
|
||||
lenName = lenNameMax;
|
||||
lenValue = lenValueMax;
|
||||
if (ERROR_SUCCESS != RegEnumValueW(hKey, i, valName, &lenName, NULL, &type, (LPBYTE)buffer, &lenValue))
|
||||
break;
|
||||
if (match_string(buffer, sstring, mode)) {
|
||||
HeapFree(GetProcessHeap(), 0, valName);
|
||||
HeapFree(GetProcessHeap(), 0, buffer);
|
||||
heap_free(valName);
|
||||
heap_free(buffer);
|
||||
RegCloseKey(hKey);
|
||||
*row = i+adjust;
|
||||
return TRUE;
|
||||
|
@ -298,8 +295,8 @@ static BOOL match_item(HWND hwndTV, HTREEITEM hItem, LPCWSTR sstring, int mode,
|
|||
|
||||
i++;
|
||||
}
|
||||
HeapFree(GetProcessHeap(), 0, valName);
|
||||
HeapFree(GetProcessHeap(), 0, buffer);
|
||||
heap_free(valName);
|
||||
heap_free(buffer);
|
||||
RegCloseKey(hKey);
|
||||
}
|
||||
return FALSE;
|
||||
|
@ -375,7 +372,7 @@ static BOOL RefreshTreeItem(HWND hwndTV, HTREEITEM hItem)
|
|||
} else {
|
||||
hKey = hRoot;
|
||||
}
|
||||
HeapFree(GetProcessHeap(), 0, KeyPath);
|
||||
heap_free(KeyPath);
|
||||
|
||||
if (RegQueryInfoKeyW(hKey, 0, 0, 0, &dwCount, &dwMaxSubKeyLen, 0, 0, 0, 0, 0, 0) != ERROR_SUCCESS) {
|
||||
return FALSE;
|
||||
|
@ -396,14 +393,10 @@ static BOOL RefreshTreeItem(HWND hwndTV, HTREEITEM hItem)
|
|||
}
|
||||
|
||||
dwMaxSubKeyLen++; /* account for the \0 terminator */
|
||||
if (!(Name = HeapAlloc(GetProcessHeap(), 0, dwMaxSubKeyLen * sizeof(WCHAR)))) {
|
||||
return FALSE;
|
||||
}
|
||||
Name = heap_xalloc(dwMaxSubKeyLen * sizeof(WCHAR));
|
||||
|
||||
tvItem.cchTextMax = dwMaxSubKeyLen;
|
||||
if (!(tvItem.pszText = HeapAlloc(GetProcessHeap(), 0, dwMaxSubKeyLen * sizeof(WCHAR)))) {
|
||||
HeapFree(GetProcessHeap(), 0, Name);
|
||||
return FALSE;
|
||||
}
|
||||
tvItem.pszText = heap_xalloc(dwMaxSubKeyLen * sizeof(WCHAR));
|
||||
|
||||
/* Now go through all the children in the registry, and check if any have to be added. */
|
||||
for (dwIndex = 0; dwIndex < dwCount; dwIndex++) {
|
||||
|
@ -430,8 +423,8 @@ static BOOL RefreshTreeItem(HWND hwndTV, HTREEITEM hItem)
|
|||
tvItem.mask = TVIF_TEXT;
|
||||
tvItem.hItem = childItem;
|
||||
if (!TreeView_GetItemW(hwndTV, &tvItem)) {
|
||||
HeapFree(GetProcessHeap(), 0, Name);
|
||||
HeapFree(GetProcessHeap(), 0, tvItem.pszText);
|
||||
heap_free(Name);
|
||||
heap_free(tvItem.pszText);
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
|
@ -446,8 +439,8 @@ static BOOL RefreshTreeItem(HWND hwndTV, HTREEITEM hItem)
|
|||
AddEntryToTree(hwndTV, hItem, Name, NULL, dwSubCount);
|
||||
}
|
||||
}
|
||||
HeapFree(GetProcessHeap(), 0, Name);
|
||||
HeapFree(GetProcessHeap(), 0, tvItem.pszText);
|
||||
heap_free(Name);
|
||||
heap_free(tvItem.pszText);
|
||||
RegCloseKey(hKey);
|
||||
|
||||
/* Now go through all the children in the tree, and check if any have to be removed. */
|
||||
|
@ -658,8 +651,7 @@ BOOL UpdateExpandingTree(HWND hwndTV, HTREEITEM hItem, int state)
|
|||
errCode = RegQueryInfoKeyW(hNewKey, 0, 0, 0, &dwCount, &dwMaxSubKeyLen, 0, 0, 0, 0, 0, 0);
|
||||
if (errCode != ERROR_SUCCESS) goto done;
|
||||
dwMaxSubKeyLen++; /* account for the \0 terminator */
|
||||
Name = HeapAlloc(GetProcessHeap(), 0, dwMaxSubKeyLen * sizeof(WCHAR));
|
||||
if (!Name) goto done;
|
||||
Name = heap_xalloc(dwMaxSubKeyLen * sizeof(WCHAR));
|
||||
|
||||
for (dwIndex = 0; dwIndex < dwCount; dwIndex++) {
|
||||
DWORD cName = dwMaxSubKeyLen, dwSubCount;
|
||||
|
@ -675,7 +667,7 @@ BOOL UpdateExpandingTree(HWND hwndTV, HTREEITEM hItem, int state)
|
|||
AddEntryToTree(hwndTV, hItem, Name, NULL, dwSubCount);
|
||||
}
|
||||
RegCloseKey(hNewKey);
|
||||
HeapFree(GetProcessHeap(), 0, Name);
|
||||
heap_free(Name);
|
||||
|
||||
done:
|
||||
item.mask = TVIF_STATE;
|
||||
|
@ -686,7 +678,7 @@ done:
|
|||
SendMessageW(hwndTV, WM_SETREDRAW, TRUE, 0);
|
||||
SetCursor(hcursorOld);
|
||||
expanding = FALSE;
|
||||
HeapFree(GetProcessHeap(), 0, keyPath);
|
||||
heap_free(keyPath);
|
||||
|
||||
return TRUE;
|
||||
}
|
||||
|
|
Loading…
Reference in a new issue