Hello Vincent,
I tried to find some more details about this issue.

In the regular case the resulting exe seems to link
to msvcrt.dll!_vsnprintf:

   $ i686-w64-mingw32-objdump --private-headers test.c.exe
        DLL Name: msvcrt.dll
        vma:  Hint/Ord Member-Name Bound-To
        63e8      766  _vsnprintf

Under wine we then get to that location:
   #0  0x7eb514d6 in MSVCRT_vsnprintf (str=0x65fe64 "", len=3, format=0x40400b 
"abcdef", valist=0x65fe5c "+\026@") at 
/home/benutzer/wine/wine-git/wine-git/dlls/msvcrt/wcs.c:686

The resulting executables are showing the same output
in wine and windows.

In the posix case it seems the snprintf implementation is
not taken from any dll, instead it is contained inside
the executable, therefore supplied by the compiler?

Microsoft states [1], that they switched in VS2015 snprintf
to be C99 compliant, wouldn't therefore snprintf in msvcrt.dll
not compliant?

Is this issue in the end that mingw should link to
newer c-library by default?

Kind regards,
Bernhard

[1] 
https://docs.microsoft.com/en-us/cpp/c-runtime-library/reference/snprintf-snprintf-snprintf-l-snwprintf-snwprintf-l?view=vs-2019

Reply via email to