[Bug 46513] New: MCI_Open handling of filenames passed with MCI_OPEN_TYPE is insufficient (3D Pinball Space Cadet)
wine-bugs at winehq.org
wine-bugs at winehq.org
Thu Jan 24 17:22:23 CST 2019
https://bugs.winehq.org/show_bug.cgi?id=46513
Bug ID: 46513
Summary: MCI_Open handling of filenames passed with
MCI_OPEN_TYPE is insufficient (3D Pinball Space Cadet)
Product: Wine
Version: 4.0-rc7
Hardware: x86
OS: Linux
Status: UNCONFIRMED
Severity: normal
Priority: P2
Component: winmm&mci
Assignee: wine-bugs at winehq.org
Reporter: wenger.quentin at bluewin.ch
Distribution: ---
Created attachment 63364
--> https://bugs.winehq.org/attachment.cgi?id=63364
Patch checking for a dot in lpstrDeviceType and switching to MCI_OPEN_ELEMENT
accordingly.
I stumbled upon the error
fixme:mci:MCI_LoadMciDriver Couldn't load driver for type L"PINBALL.MID"
(as reported in the "Additional Comments" on
https://appdb.winehq.org/objectManager.php?sClass=version&iId=1673&iTestingId=73358)
while playing with 3D Pinball Space Cadet. This error prevents the MIDI
background music of the game from playing.
For reference, aplaymidi and the testing mcishell (wintest.exe) both play the
file without problems.
I tracked down this error to the function MCI_Open receiving MCI_OPEN_TYPE and
the string "pinball.mid" as lpstrDeviceType, instead of MCI_OPEN_ELEMENT and
the string in lpstrElementName.
While this may seem like a bug in Pinball, the function MCI_Open actually
already applies some check for this situation (see the comment in lines
1763-1766 of mci.c). However, the check is based on some '!' character present
in the string, which does not cover Pinball's case.
I did create a patch for my own needs, see attachment.
Please note that I provide no guarantee about the scope accuracy of this patch
- it does solve the problem, but maybe checking for the presence of a dot in
the string is too broad and creates bug with other programs...
Assuming that the logic of the patch is good, it may also be wanted to
merge/simplify/rewrite the checks somewhat, eg. merging the ERR(...), etc.
--
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