aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorTom Lane <tgl@sss.pgh.pa.us>2022-11-10 10:23:49 -0500
committerTom Lane <tgl@sss.pgh.pa.us>2022-11-10 10:23:49 -0500
commit06dca17ad547ec7cf75d2e88436d28be9d1a51c9 (patch)
treed65c2ad8f5781900620afef3800a92de3f376823
parentfc0d1ecb0bf1b0d9f8271b81735a8eb8b304ad70 (diff)
downloadpostgresql-06dca17ad547ec7cf75d2e88436d28be9d1a51c9.tar.gz
postgresql-06dca17ad547ec7cf75d2e88436d28be9d1a51c9.zip
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
-rw-r--r--src/port/snprintf.c10
1 files changed, 10 insertions, 0 deletions
diff --git a/src/port/snprintf.c b/src/port/snprintf.c
index 87525663907..8306ab4f2b8 100644
--- a/src/port/snprintf.c
+++ b/src/port/snprintf.c
@@ -110,6 +110,16 @@
#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.
*
* dopr and subroutines will not write at/past bufend, but snprintf