[Bug 50515] SofTalk 1.56 doesn't speak continuously after punctuation marks.

WineHQ Bugzilla wine-bugs at winehq.org
Mon Jan 18 06:13:05 CST 2021


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

--- Comment #2 from Sagawa <sagawa.aki+winebugs at gmail.com> ---
I can confirm SofTalk 1.56 ignores returned mmtime.wType value.
It doesn't test mmtime.wType value after waveOutGetPosition call,
and the duration referred from 0043078B is expressed in bytes.

Here is disassembly:
0043075A | mov ecx,6                               | ZeroMemory(&mmtime,
sizeof(MMTIME))
0043075F | xor eax,eax                             |
00430761 | lea edi,dword ptr ss:[ebp-2C]           |
00430764 | rep stosd                               |
00430766 | lea ecx,dword ptr ss:[ebp-2C]           | set &mmtime to ECX
00430769 | push 18                                 | sizeof(MMTIME)
0043076B | push ecx                                | LPMMTIME &mmtime
0043076C | push edx                                | HWAVEOUT
0043076D | mov dword ptr ss:[ebp-30],ebx           |
00430770 | mov dword ptr ss:[ebp-2C],1             | mmtime.wType = TIME_MS
00430777 | call softalk.40A8A0                     | waveOutGetPosition
0043077C | mov edi,eax                             |
0043077E | call dword ptr ds:[<&__vbaSetSystemErro |
00430784 | cmp edi,ebx                             |
00430786 | jne softalk.43079A                      |
00430788 | mov ecx,dword ptr ss:[ebp-28]           | mmtime.u.cb (or
mmtime.u.ms)
0043078B | mov edx,dword ptr ds:[esi+74]           | duration in bytes
0043078E | xor eax,eax                             |
00430790 | cmp ecx,edx                             | compare...
00430792 | setl al                                 |
00430795 | neg eax                                 | make Visual Basic Boolean
00430797 | mov dword ptr ss:[ebp-30],eax           | store the result to local
var.
0043079A | mov eax,dword ptr ss:[ebp+8]            |
0043079D | push eax                                |
0043079E | mov edx,dword ptr ds:[eax]              |
004307A0 | call dword ptr ds:[edx+8]               | call BASIC_CLASS_Release
004307A3 | mov eax,dword ptr ss:[ebp+C]            |
004307A6 | mov cx,word ptr ss:[ebp-30]             |
004307AA | mov word ptr ds:[eax],cx                | copy the result to the
arg.

-- 
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