https://bugs.winehq.org/show_bug.cgi?id=48174
Bug ID: 48174 Summary: wine-mono creates incorrect strings Product: Wine Version: 4.20 Hardware: x86-64 OS: Linux Status: UNCONFIRMED Severity: normal Priority: P2 Component: mscoree Assignee: wine-bugs@winehq.org Reporter: galtgendo@o2.pl Distribution: ---
This bug is about Smile Game Builder - a game engine. As a testcase 「虚毒ノ夢」 will be used - a (it seems - I don't actually know Japanese) freeware game available from https://kanawo.wixsite.com/teritoma/kodoku (first link is the download: https://www.freem.ne.jp/dl/win/15104).
Problem 1.
As you might notice, the window title is purely mojibake. CreateWindowEx expects CP_ACP string in cs->lpszName, but it's getting an utf8 one. That's pretty much sums up what I could figure out about this part.
Problem 2.
This one is more tricky to notice; also, I couldn't figure out much about it, so just describing symptoms. Some of the strings printed on the screen (AFAICT neither by gdi, gdiplus nor user32 standard text functions) are read from memory then written on the screen past their actual length. What's more, they flicker - that is if such string is printed, some of the time its extra part changes upon redraw. As far as I understand mono (which, granted, isn't all that much), it would suggest that upon string object creation its length is set incorrectly.
In the example game, you can observe it with a few strings as you start a new game, then once you get control, if you walk to the closet (not the bookcase) and interact with it, it's another such string.