http://bugs.winehq.org/show_bug.cgi?id=12326
--- Comment #2 from Tefnet developers developers@tefnet.pl 2008-04-03 12:10:47 --- The problem is in function SHELL_execute in line 1714 and 1717.
lstrcpynW(wfileName, sei_tmp.lpFile,sizeof(wfileName)); } } else lstrcpynW(wfileName, sei_tmp.lpFile,sizeof(wfileName));
lpFile = wfileName;
There is a strcpyW from sei_tmp.lpFile (wich size we don't know) to wfileName with fixed length = MAX_PATH.
As a result wfileName by accident overwrites lpstrProtocol passed as argument "key" to SHELL_FindExecutable. That's why in function SHELL_FindExecutable line:
if (key) *key = '\0';
cuts my long argument.
How should I solve this problem?
Using lstrcpynW instead of strcpyW doesn't solve my problem, because it will still cut my argument.