https://git.reactos.org/?p=reactos.git;a=commitdiff;h=7f45cac9ab975402cc98d…
commit 7f45cac9ab975402cc98d491c8ac0c67733f0a3b
Author: Jose Carlos Jesus <zecarlos1957(a)hotmail.com>
AuthorDate: Thu May 18 06:16:49 2023 -0400
Commit: GitHub <noreply(a)github.com>
CommitDate: Thu May 18 19:16:49 2023 +0900
[REGEDIT] Creating a new Key should add a new entry even when no child exist.
CORE-18878 (#5274)
- Avoid using a NULL pointer when My Computer is selected, by disabling the New Key
menu item.
- Simplifies and fix code style in GetItemPath function.
- Add a new entry even when no child items exist.
CORE-18878
---
base/applications/regedit/treeview.c | 30 +++++++++++++++++++++---------
1 file changed, 21 insertions(+), 9 deletions(-)
diff --git a/base/applications/regedit/treeview.c b/base/applications/regedit/treeview.c
index 9c957cfe2ad..958aae6cdc7 100644
--- a/base/applications/regedit/treeview.c
+++ b/base/applications/regedit/treeview.c
@@ -90,14 +90,25 @@ LPCWSTR GetItemPath(HWND hwndTV, HTREEITEM hItem, HKEY* phRootKey)
int pathLen = 0, maxLen;
*phRootKey = NULL;
- if (!pathBuffer) pathBuffer = HeapAlloc(GetProcessHeap(), 0, 1024);
- if (!pathBuffer) return NULL;
- *pathBuffer = 0;
+
+ if (!pathBuffer)
+ {
+ pathBuffer = HeapAlloc(GetProcessHeap(), 0, 1024);
+ }
+ if (!pathBuffer)
+ {
+ return NULL;
+ }
+
+ *pathBuffer = UNICODE_NULL;
+
maxLen = (int) HeapSize(GetProcessHeap(), 0, pathBuffer);
- if (maxLen == -1) return NULL;
- if (!hItem) hItem = TreeView_GetSelection(hwndTV);
- if (!hItem) return NULL;
- if (!get_item_path(hwndTV, hItem, phRootKey, &pathBuffer, &pathLen,
&maxLen))
+
+ if (!hItem)
+ {
+ hItem = TreeView_GetSelection(hwndTV);
+ }
+ if (maxLen == -1 || !hItem || !get_item_path(hwndTV, hItem, phRootKey,
&pathBuffer, &pathLen, &maxLen))
{
return NULL;
}
@@ -353,7 +364,7 @@ HTREEITEM InsertNode(HWND hwndTV, HTREEITEM hItem, LPWSTR name)
if (!TreeView_GetItem(hwndTV, &item))
return FALSE;
- if ((item.state & TVIS_EXPANDEDONCE) && (item.cChildren > 0))
+ if (item.state & TVIS_EXPANDEDONCE)
{
hNewItem = AddEntryToTree(hwndTV, hItem, name, 0, 0);
SendMessageW(hwndTV, TVM_SORTCHILDREN, 0, (LPARAM) hItem);
@@ -645,8 +656,9 @@ BOOL TreeWndNotifyProc(HWND hWnd, WPARAM wParam, LPARAM lParam, BOOL
*Result)
UpdateAddress(pnmtv->itemNew.hItem, NULL, NULL, TRUE);
- /* Disable the Permissions menu item for 'My Computer' */
+ /* Disable the Permissions and new key menu items for 'My Computer'
*/
EnableMenuItem(hMenuFrame, ID_EDIT_PERMISSIONS, MF_BYCOMMAND | (hParentItem ?
MF_ENABLED : MF_GRAYED));
+ EnableMenuItem(hMenuFrame, ID_EDIT_NEW_KEY, MF_BYCOMMAND | (hParentItem ?
MF_ENABLED : MF_GRAYED));
/*
* Disable Delete/Rename menu options for 'My Computer' (first item
so doesn't have any parent)