On 4/30/11 3:05 PM, Eric Pouech wrote:
Le 30/04/2011 12:15, Jacek Caban a écrit :
On 4/29/11 11:58 PM, Eric Pouech wrote:
Le 29/04/2011 23:07, Dan Kegel a écrit :
While testing a game with current gecko, I saw the error
wine: Call from 0x7bc4ad90 to unimplemented function msvcrt.dll._snwprintf_s, aborting
The game needed a native msvcrt, so I had installed one with winetricks, and it didn't export that function.
So it seems that new gecko is incompatible with old msvcrt, and using native msvcrt as a workaround for bugs in wine's version is going to be harder than it used to be.
Time to fix more of them msvcrt bugs, I guess... And/or find a more up to date msvcrt.dll for winetricks.
or link gecko against msvcr80 or msvcr90 instead of msvcrt
It's harder than it seems, esp. because it's not well supported by mingw-w64. Also even if we did it, Wine would still forward these calls to msvcrt, so one would need another native DLL. Given that, we need more serious reason for the change than supporting hackish winetricks verb. Fixing our msvcrt implementation is the way to go IMO.
I don't agree on your last point in native msvcrt, there is none _snwprintf_s function (it only exists in msvcrN where N>=8 (didn't really check all versions)) _snwprintf_s is implemented in our msvcrN (which forwards them to msvcrt) the point here is that one tries to run gecko with native msvcrt which doesn't contain this function so if gecko needs it, it shouldn't link to msvcrt but to msvcrN is we want to maintain compat with native DLLs
I've checked my Win7 msvcrt.dll version and it exports _snwprintf_s (that's why Dan mentioned finding more up to date msvcrt.dll as an alternative solution). My point of fixing msvcrt was not related to _snwprintf_s, I was talking about the reason someone wants to use msvcrt in the first place (it's an app that requires it due to other bug, not Gecko). We use mingw-w64 msvcrt import library which doesn't contain Wine extensions to msvcrt.dll, so we're safe from accidentally using Wine-only APIs.
BTW, mingw-w64 contains limited support for some msvcrN dlls-only function in its crt (we link it statically), which was enough for our needs so far.
Jacek