[PATCH] pass correct buffersize to LCMapStringW
Dmitry Timoshkov
dmitry at codeweavers.com
Sun Sep 14 10:01:06 CDT 2008
"Michael Karcher" <wine at mkarcher.dialup.fu-berlin.de> wrote:
>> > 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.
>
> Do you have any references for this claim? Wine doesn't implement it,
> MSDN mentions only characters and there is no Wine API test to prove
> your statement.
Wine does implement that, and MSDN clearly describes the case of
generating a sort key too.
>> > - 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");
>> 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.
>
> Even if the size doesn't matter, this line should get fixed, as the Wine
> tests are a kind of of Win32 API reference by example. IMHO you
> shouldn't include such misleading parameters as the size in the wrong
> unit into API usage examples.
This particular test doesn't depend on the size of the target buffer,
be it 0, -1, or whatever.
--
Dmitry.
More information about the wine-devel
mailing list