shlwapi: Resupply array sizes stripped by function interface
mikolaj at zalewski.pl
Tue Sep 26 16:20:28 CDT 2006
Andrew Talbot wrote:
>Dan Kegel wrote:
>>BTW the way you define the new size, as a magic constant, seems
>>bad. Can you use 4 * sizeof(WCHAR), or whatever, instead of 8?
>>And even then, the '4' seems almost as bad.
>Yes, I did feel uneasy about using a magic constant, I must admit. Another
>way to handle it would be to call GetLocaleInfoW() twice for each buffer.
>The first time with its lpLCData parameter equal to NULL and its cchData
>parameter equal to zero, which should return the number of characters
>required for the buffer. The second time to then retrieve the required
>locale information. I had originally decided against this, because I felt
>that it might be over-engineering, but how does that sound to you?
I've wrote that code and forgot that sizeof(parameter array) is the
size of a pointer. The current code will actually work as in current
wine there is no locale that has more than one character (plus the NUL
terminator) for the decimal or thousand separator but it's better to fix
it to use the whole buffer in case a locale with a strange separator is
added. I've chosen the value 8 because I can't imagine a longer
separator. I agree #defining a constant for it (and using it in
FillNumberFmt, FormatInt, FormatDouble) would be good but writing it as
4*sizeof(WCHAR) isn't a good idea as the fourth parameter is the number
of characters, not the number of bytes.
More information about the wine-devel