[flac-dev] snprintf and MS Visual Studio

Erik de Castro Lopo mle+la at mega-nerd.com
Thu Mar 14 18:09:01 PDT 2013


Christoph Terasa wrote:

> Since MS refuses to support C99, the common practice is to use either
> 
>      sprintf_s: 
> http://msdn.microsoft.com/en-us/library/ce3zzk1k(v=VS.80).aspx
>     _snprintf_s: 
> http://msdn.microsoft.com/de-de/library/f30dzcf6(v=VS.80).aspx
> 
> The former can be used as a drop-in replacement of snprintf via a 
> define, the latter takes an additional argument count which can limit 
> the bytes written to the buffer additionally.

Hmm, the first can be used as a drop-in replacement for many but
not all uses of ISO C99 snprintf. For the uses in FLAC, it should
be sufficient, we just have to be careful not to rely on the return
value.

> DO NOT use
>     _snprintf: 
> http://msdn.microsoft.com/de-de/library/2ts7cx93(v=vs.80).aspx
> 
> since this does not NULL terminate if the length of the buffer is equal 
> to the given buffer size (or larger than), and this differs from the std 
> behaviour as stated at e.g. http://linux.die.net/man/3/snprintf

Yes, now I remember, that one is horribly broken.

Erik
-- 
----------------------------------------------------------------------
Erik de Castro Lopo
http://www.mega-nerd.com/


More information about the flac-dev mailing list