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(a)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