mirror of
https://github.com/reactos/reactos.git
synced 2025-08-05 21:42:57 +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;
|
LPTSTR lpNewSubKey = NULL;
|
||||||
LONG Ret = 0;
|
LONG Ret = 0;
|
||||||
|
|
||||||
s = _tcsrchr(lpSubKey, '\\');
|
s = _tcsrchr(lpSubKey, _T('\\'));
|
||||||
if (s)
|
if (s)
|
||||||
{
|
{
|
||||||
s++;
|
s++;
|
||||||
lpNewSubKey = (LPTSTR) HeapAlloc(GetProcessHeap(), 0, (s - lpSubKey + _tcslen(lpNewName) + 1) * sizeof(TCHAR));
|
lpNewSubKey = (LPTSTR) HeapAlloc(GetProcessHeap(), 0, (s - lpSubKey + _tcslen(lpNewName) + 1) * sizeof(TCHAR));
|
||||||
if (lpNewName != NULL) {
|
if (lpNewSubKey != NULL)
|
||||||
|
{
|
||||||
memcpy(lpNewSubKey, lpSubKey, (s - lpSubKey) * sizeof(TCHAR));
|
memcpy(lpNewSubKey, lpSubKey, (s - lpSubKey) * sizeof(TCHAR));
|
||||||
_tcscpy(lpNewSubKey + (s - lpSubKey), lpNewName);
|
_tcscpy(lpNewSubKey + (s - lpSubKey), lpNewName);
|
||||||
lpNewName = lpNewSubKey;
|
lpNewName = lpNewSubKey;
|
||||||
}
|
}
|
||||||
|
else
|
||||||
|
return ERROR_NOT_ENOUGH_MEMORY;
|
||||||
}
|
}
|
||||||
if (lpNewName != NULL) {
|
|
||||||
Ret = RegMoveKey(hKey, lpNewName, hKey, lpSubKey);
|
Ret = RegMoveKey(hKey, lpNewName, hKey, lpSubKey);
|
||||||
if (s) {
|
|
||||||
|
if (lpNewSubKey)
|
||||||
|
{
|
||||||
HeapFree(GetProcessHeap(), 0, lpNewSubKey);
|
HeapFree(GetProcessHeap(), 0, lpNewSubKey);
|
||||||
}
|
}
|
||||||
}
|
|
||||||
return Ret;
|
return Ret;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue