[PATCH] pass correct buffersize to LCMapStringW
Marcus Meissner
marcus at
Sun Sep 14 11:00:59 CDT 2008
On Sun, Sep 14, 2008 at 11:32:31PM +0900, Dmitry Timoshkov wrote:
> "Marcus Meissner" <marcus at jet.franken.de> wrote:
>
>> diff --git a/dlls/kernel32/tests/locale.c b/dlls/kernel32/tests/locale.c
>> index f792da2..a49953b 100644
>> --- a/dlls/kernel32/tests/locale.c
>> +++ b/dlls/kernel32/tests/locale.c
>> @@ -1268,7 +1268,7 @@ static void test_LCMapStringW(void)
>> /* otherwise src == dst should fail */
>> SetLastError(0xdeadbeef);
>> ret = LCMapStringW(LOCALE_USER_DEFAULT, LCMAP_SORTKEY | LCMAP_UPPERCASE,
>> - buf, 10, buf, sizeof(buf));
>> + buf, 10, buf, sizeof(buf)/sizeof(WCHAR));
>> ok(GetLastError() == ERROR_INVALID_FLAGS /* NT */ ||
>> GetLastError() == ERROR_INVALID_PARAMETER /* Win9x */,
>> "unexpected error code %d\n", GetLastError());
>> @@ -1276,40 +1276,40 @@ static void test_LCMapStringW(void)
>>
>> /* test whether '\0' is always appended */
>> ret = LCMapStringW(LOCALE_USER_DEFAULT, LCMAP_SORTKEY,
>> - upper_case, -1, buf, sizeof(buf));
>> + upper_case, -1, buf, sizeof(buf)/sizeof(WCHAR));
>> ok(ret, "LCMapStringW must succeed\n");
>> ret2 = LCMapStringW(LOCALE_USER_DEFAULT, LCMAP_SORTKEY,
>> - upper_case, lstrlenW(upper_case), buf2, sizeof(buf2));
>> + upper_case, lstrlenW(upper_case), buf2, sizeof(buf2)/sizeof(WCHAR));
>> ok(ret, "LCMapStringW must succeed\n");
>> ok(ret == ret2, "lengths of sort keys must be equal\n");
>> ok(!lstrcmpA(p_buf, p_buf2), "sort keys must be equal\n");
>>
>> /* test LCMAP_SORTKEY | NORM_IGNORECASE */
>> ret = LCMapStringW(LOCALE_USER_DEFAULT, LCMAP_SORTKEY | NORM_IGNORECASE,
>> - upper_case, -1, buf, sizeof(buf));
>> + upper_case, -1, buf, sizeof(buf)/sizeof(WCHAR));
>> ok(ret, "LCMapStringW must succeed\n");
>> ret2 = LCMapStringW(LOCALE_USER_DEFAULT, LCMAP_SORTKEY,
>> - lower_case, -1, buf2, sizeof(buf2));
>> + lower_case, -1, buf2, sizeof(buf2)/sizeof(WCHAR));
>> ok(ret2, "LCMapStringW must succeed\n");
>> ok(ret == ret2, "lengths of sort keys must be equal\n");
>> ok(!lstrcmpA(p_buf, p_buf2), "sort keys must be equal\n");
>>
>> /* test LCMAP_SORTKEY | NORM_IGNORENONSPACE */
>> ret = LCMapStringW(LOCALE_USER_DEFAULT, LCMAP_SORTKEY | NORM_IGNORENONSPACE,
>> - lower_case, -1, buf, sizeof(buf));
>> + lower_case, -1, buf, sizeof(buf)/sizeof(WCHAR));
>> ok(ret, "LCMapStringW must succeed\n");
>> ret2 = LCMapStringW(LOCALE_USER_DEFAULT, LCMAP_SORTKEY,
>> - lower_case, -1, buf2, sizeof(buf2));
>> + lower_case, -1, buf2, sizeof(buf2)/sizeof(WCHAR));
>> ok(ret2, "LCMapStringW must succeed\n");
>> ok(ret == ret2, "lengths of sort keys must be equal\n");
>> ok(!lstrcmpA(p_buf, p_buf2), "sort keys must be equal\n");
>>
>> /* test LCMAP_SORTKEY | NORM_IGNORESYMBOLS */
>> ret = LCMapStringW(LOCALE_USER_DEFAULT, LCMAP_SORTKEY | NORM_IGNORESYMBOLS,
>> - lower_case, -1, buf, sizeof(buf));
>> + lower_case, -1, buf, sizeof(buf)/sizeof(WCHAR));
>> ok(ret, "LCMapStringW must succeed\n");
>> ret2 = LCMapStringW(LOCALE_USER_DEFAULT, LCMAP_SORTKEY,
>> - symbols_stripped, -1, buf2, sizeof(buf2));
>> + symbols_stripped, -1, buf2, sizeof(buf2)/sizeof(WCHAR));
>> ok(ret2, "LCMapStringW must succeed\n");
>> ok(ret == ret2, "lengths of sort keys must be equal\n");
>> ok(!lstrcmpA(p_buf, p_buf2), "sort keys must be equal\n");
>
> LCMAP_SORTKEY takes the target buffer size in bytes in both A and W versions.
Thats a bad API then :(
>> @@ -1332,7 +1332,7 @@ static void test_LCMapStringW(void)
>>
>> /* test srclen = 0 */
>> SetLastError(0xdeadbeef);
>> - ret = LCMapStringW(LOCALE_USER_DEFAULT, 0, upper_case, 0, buf, sizeof(buf));
>> + ret = LCMapStringW(LOCALE_USER_DEFAULT, 0, upper_case, 0, buf, sizeof(buf)/sizeof(WCHAR));
>> ok(!ret, "LCMapStringW should fail with srclen = 0\n");
>> ok(GetLastError() == ERROR_INVALID_PARAMETER,
>> "unexpected error code %d\n", GetLastError());
>
> The size of the target buffer doesn't matter at all in this case, since
> the API is supposed to fail due to source length being 0.
Hmm.
Have to adjust my tests then.
Ciao, Marcus
More information about the wine-devel
mailing list