Index: base/applications/regedit/framewnd.c =================================================================== --- base/applications/regedit/framewnd.c (revision 74316) +++ base/applications/regedit/framewnd.c (working copy) @@ -1125,14 +1125,12 @@ keyPath = GetItemPath(g_pChildWnd->hTreeWnd, 0, &hKeyRoot); valueName = GetValueName(g_pChildWnd->hListWnd, -1); + if (keyPath) + { + lRet = RegOpenKeyExW(hKeyRoot, keyPath, 0, regsam, &hKey); + if (lRet != ERROR_SUCCESS) hKey = 0; + } - if (!keyPath) - return TRUE; - - lRet = RegOpenKeyExW(hKeyRoot, keyPath, 0, regsam, &hKey); - if (lRet != ERROR_SUCCESS) - hKey = 0; - switch (LOWORD(wParam)) { case ID_EDIT_MODIFY: Index: base/applications/regedit/settings.c =================================================================== --- base/applications/regedit/settings.c (revision 74316) +++ base/applications/regedit/settings.c (working copy) @@ -122,26 +122,25 @@ { RegistryBinaryConfig tConfig; DWORD iBufferSize = sizeof(tConfig); - WCHAR szBuffer[MAX_PATH]; + WCHAR szBuffer[MAX_PATH]; /* a complete registry path can be longer than that */ LPCWSTR keyPath, rootName; HKEY hRootKey; /* Save key position */ keyPath = GetItemPath(g_pChildWnd->hTreeWnd, 0, &hRootKey); + rootName = get_root_key_name(hRootKey); + + /* Load "My Computer" string and complete it */ + LoadStringW(hInst, IDS_MY_COMPUTER, szBuffer, COUNT_OF(szBuffer)); + StringCbCatW(szBuffer, sizeof(szBuffer), L"\\"); + StringCbCatW(szBuffer, sizeof(szBuffer), rootName); + StringCbCatW(szBuffer, sizeof(szBuffer), L"\\"); + if (keyPath) { - rootName = get_root_key_name(hRootKey); - - /* Load "My Computer" string and complete it */ - if (LoadStringW(hInst, IDS_MY_COMPUTER, szBuffer, COUNT_OF(szBuffer)) && - SUCCEEDED(StringCbCatW(szBuffer, sizeof(szBuffer), L"\\")) && - SUCCEEDED(StringCbCatW(szBuffer, sizeof(szBuffer), rootName)) && - SUCCEEDED(StringCbCatW(szBuffer, sizeof(szBuffer), L"\\")) && - SUCCEEDED(StringCbCatW(szBuffer, sizeof(szBuffer), keyPath))) - { - RegSetValueExW(hKey, L"LastKey", 0, REG_SZ, (LPBYTE)szBuffer, (DWORD)wcslen(szBuffer) * sizeof(WCHAR)); - } + StringCbCatW(szBuffer, sizeof(szBuffer), keyPath); } + RegSetValueExW(hKey, L"LastKey", 0, REG_SZ, (LPBYTE)szBuffer, (DWORD)wcslen(szBuffer) * sizeof(WCHAR)); /* Get statusbar settings */ tConfig.StatusBarVisible = ((GetMenuState(GetSubMenu(hMenuFrame, ID_VIEW_MENU), ID_VIEW_STATUSBAR, MF_BYCOMMAND) & MF_CHECKED) ? 1 : 0);