https://bugs.winehq.org/show_bug.cgi?id=40620
Michael Müller michael@fds-team.de changed:
What |Removed |Added ---------------------------------------------------------------------------- CC| |michael@fds-team.de
--- Comment #1 from Michael Müller michael@fds-team.de --- Have you tested the application on Windows? I don't think it can work on Windows this way.
My guess is that this is an application bug, but it is a bit hard to tell without the source code. The crash happens in your runPE::run function. You try to check if the the passed buffer (second parameter) starts with MZ. You implemented the comparison using a short or WORD as data type and therefore you need to cast the pointer to a WORD* or short* pointer. Judging from the assembler code, you do not only cast the pointer but also cast the value of the pointer, i.e. you remove the higher 16 bits from the address. The address is therefore invalid and it will crash.