improved error handling in RegRenameKey

svn path=/trunk/; revision=18642
This commit is contained in:
Thomas Bluemel 2005-10-20 18:17:06 +00:00
parent 7da9542b29
commit 582c386e46

View file

@ -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;
}