postgres.git / summary / log / commit / refs

commit    0942acb73efcff1564f8d1b1ae890c8135467eae
Author:   Tom Lane <tgl@sss.pgh.pa.us>
Date:     Thu Nov 10 15:23:49 2022 +0000
First released in: 12.14, 13.10, 14.7, 15.2

    Re-allow building on Microsoft Visual Studio 2013.
    
    In commit 450ee7012 I supposed that all platforms we now care about have
    snprintf(), since that's required by C99.  Turns out that Microsoft did
    not get around to adding that until VS2015.  We've dropped support for
    VS2013 as of HEAD (cf 6203583b7), but not in the back branches, so add
    a hack for this in the back branches only.
    
    There's no easy shortcut to an exact emulation of standard snprintf
    in VS2013, but fortunately we don't need one: this code was just fine
    with using sprintf before 450ee7012, so we can make it do so again
    on that platform (and any others where the problem might crop up).
    
    Per bug #17681 from Daisuke Higuchi.  Back-patch to v12, like the
    previous patch.
    
    Discussion: https://postgr.es/m/17681-485ba2ec13e7f392@postgresql.org


src/port/snprintf.c | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/src/port/snprintf.c b/src/port/snprintf.c index 9c6eb493ee4..54c96665bba 100644 --- a/src/port/snprintf.c +++ b/src/port/snprintf.c @@ -109,6 +109,16 @@ #undef vprintf #undef printf +/* + * We use the platform's native snprintf() for some machine-dependent cases. + * While that's required by C99, Microsoft Visual Studio lacks it before + * VS2015. Fortunately, we don't really need the length check in practice, + * so just fall back to native sprintf() on that platform. + */ +#if defined(_MSC_VER) && _MSC_VER < 1900 /* pre-VS2015 */ +#define snprintf(str,size,...) sprintf(str,__VA_ARGS__) +#endif + /* * Info about where the formatted output is going. * [parent: 1949135e79e8]