Re: msvcrt:string Fix codepage table 1361 (Korean Johab) [try3]
Alexandre Goujon <ale.goujon(a)gmail.com> writes:
@@ -1563,8 +1564,16 @@ sub HANDLE_FILE(@) } printf OUTPUT "#include \"wine/unicode.h\"\n\n";
+ @lb_ranges = get_lb_ranges(); + + if( $codepage == 1361 ) + { + $lb_ranges[0] = 0x81; + $lb_ranges[2] = 0xd8; + }
A quick test on Windows shows that this isn't correct as far as the kernel32 info is concerned. -- Alexandre Julliard julliard(a)winehq.org
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
GOUJON Alexandre <ale.goujon(a)gmail.com> writes:
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 ?
GetCPInfo, that's where the kernel32 info is. -- Alexandre Julliard julliard(a)winehq.org
On 09/03/2010 12:30 PM, Alexandre Julliard wrote:
GetCPInfo, that's where the kernel32 info is. I must admit I don't understand anymore. GetCPInfo failed with codepage 1361 on my XP (whereas _setmbcp(1361) succeeded )
However, on WXPPROJASP3 (32 bit) [1], GetCPInfo succeeds and LeadByte[] contains { 0x84, 0xd3, 0xd8, 0xde, 0xe0, 0xf9, 0x00, 0x00 } (so the only change is actually 0xd9 -> 0xd8) I give up on this one. You're quite busy and there are plenty of others todo_wine to fix. Anyway, thanks for your comments ! --- https://testbot.winehq.org/JobDetails.pl?Key=4986&log_109=1#k109
participants (2)
-
Alexandre Julliard -
GOUJON Alexandre