From: Mark Adler Date: Sun, 3 Jun 2012 19:45:55 +0000 (-0700) Subject: Use _snprintf for snprinf in Microsoft C. X-Git-Tag: v1.2.7.1~50 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=25e4a3da552ab570d2a049cc2d75b6e23ba9362a;p=thirdparty%2Fzlib-ng.git Use _snprintf for snprinf in Microsoft C. More than a decade later, Microsoft C does not support the C99 standard. It's good that _snprintf has a different name, since it does not guarantee that the result is null terminated, as does snprintf. However where _snprintf is used under Microsoft C, the destination string is assured to be long enough, so this will not be a problem. This occurs in two places, both in gzlib.c. Where sprintf functionality is needed by gzprintf, vsnprintf is used in the case of Microsoft C. --- diff --git a/gzguts.h b/gzguts.h index ee3f281aa..68d135b47 100644 --- a/gzguts.h +++ b/gzguts.h @@ -88,6 +88,14 @@ # endif #endif +/* unlike snprintf (which is required in C99, yet still not supported by + Microsoft more than a decade later!), _snprintf does not guarantee null + termination of the result -- however this is only used in gzlib.c where + the result is assured to fit in the space provided */ +#ifdef _MSC_VER +# define snprintf _snprintf +#endif + #ifndef local # define local static #endif