[Bug 45536] Total Commander 9.x crashes on unimplemented function usp10.dll.ScriptGetFontAlternateGlyphs when Wine is not detected via named export 'ntdll.wine_get_version'

WineHQ Bugzilla wine-bugs at winehq.org
Tue May 26 18:35:04 CDT 2020


https://bugs.winehq.org/show_bug.cgi?id=45536

Anastasius Focht <focht at gmx.net> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
         Resolution|---                         |FIXED
      Fixed by SHA1|                            |8257fe88fb99ca0bdeec27b47b7
                   |                            |cf835bda5c061
             Status|NEW                         |RESOLVED

--- Comment #4 from Anastasius Focht <focht at gmx.net> ---
Hello folks,

the crash is fixed by commit
https://source.winehq.org/git/wine.git/commitdiff/8257fe88fb99ca0bdeec27b47b7cf835bda5c061
("usp10: Add stub for ScriptGetFontAlternateGlyphs.").

Thanks Louis

--- snip ---
$ wine ./TOTALCMD64.EXE 
...
0214:fixme:uniscribe:ScriptGetFontAlternateGlyphs (0000000000250244,
0000000000BE4370, 000000000261D904, "latn", "ROM ", "tnum", 0x0013, 10,
000000000261D920, 0000000001CC9678)
0214:fixme:uniscribe:ScriptGetFontAlternateGlyphs (0000000000250244,
0000000000BE4370, 000000000261D904, "latn", "ROM ", "tnum", 0x0014, 10,
000000000261D920, 0000000001CC9678)
0214:fixme:uniscribe:ScriptGetFontAlternateGlyphs (0000000000250244,
0000000000BE4370, 000000000261D904, "latn", "ROM ", "tnum", 0x0015, 10,
000000000261D920, 0000000001CC9678)
0214:fixme:uniscribe:ScriptGetFontAlternateGlyphs (0000000000250244,
0000000000BE4370, 000000000261D904, "latn", "ROM ", "tnum", 0x0016, 10,
000000000261D920, 0000000001CC9678)
0214:fixme:uniscribe:ScriptGetFontAlternateGlyphs (0000000000250244,
0000000000BE4370, 000000000261D904, "latn", "ROM ", "tnum", 0x0017, 10,
000000000261D920, 0000000001CC9678)
0214:fixme:uniscribe:ScriptGetFontAlternateGlyphs (0000000000250244,
0000000000BE4370, 000000000261D904, "latn", "ROM ", "tnum", 0x0018, 10,
000000000261D920, 0000000001CC9678)
0214:fixme:uniscribe:ScriptGetFontAlternateGlyphs (0000000000250244,
0000000000BE4370, 000000000261D904, "latn", "ROM ", "tnum", 0x0019, 10,
000000000261D920, 0000000001CC9678)
0214:fixme:uniscribe:ScriptGetFontAlternateGlyphs (0000000000250244,
0000000000BE4370, 000000000261D904, "latn", "ROM ", "tnum", 0x001a, 10,
000000000261D920, 0000000001CC9678)
0214:fixme:uniscribe:ScriptGetFontAlternateGlyphs (0000000000250244,
0000000000BE4370, 000000000261D904, "latn", "ROM ", "tnum", 0x001b, 10,
000000000261D920, 0000000001CC9678)
0214:fixme:uniscribe:ScriptGetFontAlternateGlyphs (0000000000250244,
0000000000BE4370, 000000000261D904, "latn", "ROM ", "tnum", 0x001c, 10,
000000000261D920, 0000000001CC9678)
0218:fixme:bitmap:CreateBitmapIndirect planes = 0
0218:fixme:bitmap:CreateBitmapIndirect planes = 0
0218:fixme:bitmap:CreateBitmapIndirect planes = 0
0218:fixme:bitmap:CreateBitmapIndirect planes = 0
0218:fixme:bitmap:CreateBitmapIndirect planes = 0
...
--- snip ---

Fortunately the app checks the HRESULT so the stub doesn't do any harm.

--- snip ---
...
0000000000A03D6C | mov rax,qword ptr ss:[rbp-10]               |
0000000000A03D70 | lea r8,qword ptr ds:[rax+4]                 |
0000000000A03D74 | lea rdx,qword ptr ds:[BE4370]               |
0000000000A03D7B | mov rax,r13                                 |
0000000000A03D7E | mov r10,qword ptr ds:[<&ScriptGetFontAlternateGlyphs>]
0000000000A03D85 | mov rcx,rax                                 |
0000000000A03D88 | call r10                                    |
0000000000A03D8B | mov r12d,eax                                | 0x80004001
0000000000A03D8E | mov ecx,r12d                                |
0000000000A03D91 | call totalcmd64.41BF60                      | check HRESULT
0000000000A03D96 | test eax,eax                                |
0000000000A03D98 | je totalcmd64.A03DF0                        | ZF fail
0000000000A03D9A | mov eax,dword ptr ss:[rbp-48]               |
0000000000A03D9D | cmp eax,1                                   |
0000000000A03DA0 | jle totalcmd64.A03DF0                       |
...
000000000041BF60 | push rbp                                    |
000000000041BF61 | mov rbp,rsp                                 |
000000000041BF64 | sub rsp,10                                  |
000000000041BF68 | mov dword ptr ss:[rbp-8],ecx                | HRESULT
000000000041BF6B | mov eax,dword ptr ss:[rbp-8]                |
000000000041BF6E | and eax,80000000                            |
000000000041BF73 | test eax,eax                                |
000000000041BF75 | sete al                                     |
000000000041BF78 | movzx eax,al                                |
000000000041BF7B | neg eax                                     |
000000000041BF7D | mov dword ptr ss:[rbp-10],eax               |
000000000041BF80 | mov eax,dword ptr ss:[rbp-10]               |
000000000041BF83 | leave                                       |
000000000041BF84 | ret                                         |
...
--- snip ---

$ wine --version
wine-5.9-67-g8257fe88fb

Regards

-- 
Do not reply to this email, post in Bugzilla using the
above URL to reply.
You are receiving this mail because:
You are watching all bug changes.



More information about the wine-bugs mailing list