On 09/03/2010 11:18 AM, Alexandre Julliard wrote:
A quick test on Windows shows that this isn't correct as far as the kernel32 info is concerned
Huh ? What test did you do ? I compiled the attached source with mingw on my virtual XP. (unfortunately, G**gle prevent me from attaching the produced executable) I used the __p__mbcbyte() function to retrieve the complete MSVCRT_mbctype (http://source.winehq.org/git/wine.git/?a=blob;f=dlls/msvcrt/mbcs.c#l159)
On my windows, there is no output. On wine : alex@Evan:~$ wine /VM/share/test_mbcs.exe 8 != 12 @ 0x82 (130) 8 != 12 @ 0x83 (131) 8 != 12 @ 0x84 (132) 8 != 12 @ 0xD9 (217)
It misses (12-8=) 4 (_M1) added here (http://source.winehq.org/git/wine.git/?a=blob;f=dlls/msvcrt/mbcs.c#l231) if they are leading bytes.
That's why I modify the range of the leading bytes of the 1361 codepage table from 84-d3 to 81-d3 and from d9-de to d8-de.
And tests say that ( dlls/msvcrt/tests/string.c ~line 354)
expect_eq(_ismbblead(0x81), 1, int, "%d"); expect_eq(_ismbblead(0x83), 1, int, "%d"); expect_eq(_ismbblead(0xd8), 1, int, "%d");
I may have missed something or my virtual XP is really specific or it depends on windows version. Any idea ?
Thanks