mirror of
https://github.com/reactos/reactos.git
synced 2025-08-03 18:06:04 +00:00
improved error handling in RegRenameKey
svn path=/trunk/; revision=18642
This commit is contained in:
parent
7da9542b29
commit
582c386e46
1 changed files with 16 additions and 12 deletions
|
@ -1622,23 +1622,27 @@ LONG RegRenameKey(HKEY hKey, LPCTSTR lpSubKey, LPCTSTR lpNewName)
|
|||
LPTSTR lpNewSubKey = NULL;
|
||||
LONG Ret = 0;
|
||||
|
||||
s = _tcsrchr(lpSubKey, '\\');
|
||||
s = _tcsrchr(lpSubKey, _T('\\'));
|
||||
if (s)
|
||||
{
|
||||
s++;
|
||||
lpNewSubKey = (LPTSTR) HeapAlloc(GetProcessHeap(), 0, (s - lpSubKey + _tcslen(lpNewName) + 1) * sizeof(TCHAR));
|
||||
if (lpNewName != NULL) {
|
||||
memcpy(lpNewSubKey, lpSubKey, (s - lpSubKey) * sizeof(TCHAR));
|
||||
_tcscpy(lpNewSubKey + (s - lpSubKey), lpNewName);
|
||||
lpNewName = lpNewSubKey;
|
||||
}
|
||||
if (lpNewSubKey != NULL)
|
||||
{
|
||||
memcpy(lpNewSubKey, lpSubKey, (s - lpSubKey) * sizeof(TCHAR));
|
||||
_tcscpy(lpNewSubKey + (s - lpSubKey), lpNewName);
|
||||
lpNewName = lpNewSubKey;
|
||||
}
|
||||
else
|
||||
return ERROR_NOT_ENOUGH_MEMORY;
|
||||
}
|
||||
|
||||
Ret = RegMoveKey(hKey, lpNewName, hKey, lpSubKey);
|
||||
|
||||
if (lpNewSubKey)
|
||||
{
|
||||
HeapFree(GetProcessHeap(), 0, lpNewSubKey);
|
||||
}
|
||||
if (lpNewName != NULL) {
|
||||
Ret = RegMoveKey(hKey, lpNewName, hKey, lpSubKey);
|
||||
if (s) {
|
||||
HeapFree(GetProcessHeap(), 0, lpNewSubKey);
|
||||
}
|
||||
}
|
||||
return Ret;
|
||||
}
|
||||
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue