mirror of
https://github.com/reactos/reactos.git
synced 2024-10-05 00:43:21 +00:00
[REGEDIT]
Fix the creation of empty REG_MULTI_SZ values (they have to contain only one NULL char, since a multi-string has the form: str1\0str2\0...strN\0\0 where each strI\0 is a null-terminated string, and a multi-string is terminated by a null string. And therefore an empty multi-string has only one null char, corresponding to the terminating null string. svn path=/trunk/; revision=59529
This commit is contained in:
parent
89bc3d9a83
commit
66fa5c8c6f
|
@ -853,10 +853,19 @@ static BOOL CreateNewValue(HKEY hRootKey, LPCWSTR pszKeyPath, DWORD dwType)
|
||||||
cbData = sizeof(WCHAR);
|
cbData = sizeof(WCHAR);
|
||||||
break;
|
break;
|
||||||
case REG_MULTI_SZ:
|
case REG_MULTI_SZ:
|
||||||
cbData = sizeof(WCHAR) * 2;
|
/*
|
||||||
|
* WARNING: An empty multi-string has only one null char.
|
||||||
|
* Indeed, multi-strings are built in the following form:
|
||||||
|
* str1\0str2\0...strN\0\0
|
||||||
|
* where each strI\0 is a null-terminated string, and it
|
||||||
|
* ends with a terminating empty string.
|
||||||
|
* Therefore an empty multi-string contains only the terminating
|
||||||
|
* empty string, that is, one null char.
|
||||||
|
*/
|
||||||
|
cbData = sizeof(WCHAR);
|
||||||
break;
|
break;
|
||||||
case REG_QWORD:
|
case REG_QWORD: /* REG_QWORD_LITTLE_ENDIAN */
|
||||||
cbData = sizeof(DWORD) * 2;
|
cbData = sizeof(DWORDLONG); // == sizeof(DWORD) * 2;
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
cbData = 0;
|
cbData = 0;
|
||||||
|
|
|
@ -439,7 +439,7 @@ static int CALLBACK CompareFunc(LPARAM lParam1, LPARAM lParam2, LPARAM lParamSor
|
||||||
return ((int)dw2 - (int)dw1);
|
return ((int)dw2 - (int)dw1);
|
||||||
}
|
}
|
||||||
|
|
||||||
case REG_QWORD:
|
case REG_QWORD: /* REG_QWORD_LITTLE_ENDIAN */
|
||||||
{
|
{
|
||||||
qw1 = *(DWORDLONG*)l->val;
|
qw1 = *(DWORDLONG*)l->val;
|
||||||
qw2 = *(DWORDLONG*)r->val;
|
qw2 = *(DWORDLONG*)r->val;
|
||||||
|
|
Loading…
Reference in a new issue