RegDeleteTree [3rd]
Paul Vriens
paul.vriens.wine at gmail.com
Sat Apr 21 13:13:30 CDT 2007
Stefan Leichter wrote:
> Am Thursday 19 April 2007 12:14 schrieb Alexandre Julliard:
>> Stefan Leichter <Stefan.Leichter at camline.com> writes:
>>> + /* Recursively delete all the subkeys */
>>> + for (i = 0; i < dwKeyCount && !ret; i++) {
>>> + dwSize = dwMaxSubkeyLen;
>>> + ret = RegEnumKeyExW(hSubKey, i, lpszName, &dwSize,
>>> NULL, + NULL, NULL, NULL);
>> This won't work, the index will change as you delete keys.
>>
>>> + } else {
>>> + if (!ret)
>>> + ret = RegSetValueW(hSubKey, NULL, REG_SZ, emptyW, 0);
>> The function is supposed to delete the key values, that's not what
>> this does.
>>
>> You probably need to write some test cases...
> Hello Paul,
>
> i'm sorry for bothering you again on this topic, but it looks like your are
> the onlyone around having a Vista installation.
>
> Can you please verify the attached tests and report the results back.
>
> Thanks for your help
> Stefan
>
>
> ------------------------------------------------------------------------
>
> --- ../wine-git/dlls/advapi32/tests/registry.c 2007-04-18 18:45:08.000000000 +0200
> +++ dlls/advapi32/tests/registry.c 2007-04-19 23:45:01.000000000 +0200
> @@ -1151,15 +1151,33 @@
> ok(!RegQueryValueA(subkey, NULL, buffer, &size),
> "Default value of subkey not longer present\n");
>
> + ret = RegCreateKeyA(subkey, "subkey2", &subkey2);
> + ok(ret == ERROR_SUCCESS, "Expected ERROR_SUCCESS, got %d\n", ret);
> + ret = RegCloseKey(subkey2);
> + ok(ret == ERROR_SUCCESS, "Expected ERROR_SUCCESS, got %d\n", ret);
> + ret = RegCreateKeyA(subkey, "subkey3", &subkey2);
> + ok(ret == ERROR_SUCCESS, "Expected ERROR_SUCCESS, got %d\n", ret);
> + ret = RegCloseKey(subkey2);
> + ok(ret == ERROR_SUCCESS, "Expected ERROR_SUCCESS, got %d\n", ret);
> + ret = RegSetValueA(subkey2, "value", REG_SZ, "data2", 5);
> + ok(ret == ERROR_SUCCESS, "Expected ERROR_SUCCESS, got %d\n", ret);
> ret = pRegDeleteTreeA(subkey, NULL);
> ok(ret == ERROR_SUCCESS, "Expected ERROR_SUCCESS, got %d\n", ret);
> ok(!RegOpenKeyA(hkey_main, "subkey", &subkey),
> "subkey was deleted\n");
> + ok(RegOpenKeyA(subkey, "subkey2", &subkey2),
> + "subkey2 was not deleted\n");
> + ok(RegOpenKeyA(subkey, "subkey3", &subkey2),
> + "subkey3 was not deleted\n");
> + size = MAX_PATH;
> ret = RegQueryValueA(subkey, NULL, buffer, &size);
> ok(ret == ERROR_SUCCESS,
> "Default value of subkey is not present\n");
> ok(!lstrlenA(buffer),
> "Expected length 0 got length %u(%s)\n", lstrlenA(buffer), buffer);
> + size = MAX_PATH;
> + ok(RegQueryValueA(subkey, "value", buffer, &size),
> + "Value is still present\n");
>
> ret = pRegDeleteTreeA(hkey_main, "not-here");
> ok(ret == ERROR_FILE_NOT_FOUND,
Hi Stefan
the results:
registry.c:576:test_query_value_ex: type set to: 0x0022fe78
registry.c:1163: Test failed: Expected ERROR_SUCCESS, got 6
registry: 293 tests executed (0 marked as todo, 1 failure), 0 skipped.
That's because you're doing a RegSetValueA on a just-closed handle.
Cheers,
Paul.
More information about the wine-devel
mailing list