[libxslt] Correctly emulate snprintf on older MSVC versions
- From: Nick Wellnhofer <nwellnhof src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [libxslt] Correctly emulate snprintf on older MSVC versions
- Date: Thu, 25 Feb 2016 14:02:21 +0000 (UTC)
commit e75b5da121cdc67cb2303b1e2b77d5dd1cdf2784
Author: Nick Wellnhofer <wellnhofer aevum de>
Date: Wed Feb 24 16:47:40 2016 +0100
Correctly emulate snprintf on older MSVC versions
This uses the code taken from http://stackoverflow.com/a/8712996/1956010
Fixes bug #756691
https://bugzilla.gnome.org/show_bug.cgi?id=756691
libxslt/win32config.h | 43 +++++++++++++++++++++++++++++++++++--------
xsltproc/xsltproc.c | 3 ---
2 files changed, 35 insertions(+), 11 deletions(-)
---
diff --git a/libxslt/win32config.h b/libxslt/win32config.h
index 33bc570..8fe7042 100644
--- a/libxslt/win32config.h
+++ b/libxslt/win32config.h
@@ -77,14 +77,41 @@ static int isnan (double d) {
#endif /* _MSC_VER */
#include <direct.h>
-#if defined(_MSC_VER) || defined(__MINGW32__)
-#if _MSC_VER < 1900
-#define snprintf _snprintf
-#endif
-#if _MSC_VER < 1500
-#define vsnprintf(b,c,f,a) _vsnprintf(b,c,f,a)
-#endif
-#endif
+
+/* snprintf emulation taken from http://stackoverflow.com/a/8712996/1956010 */
+#if defined(_MSC_VER) && _MSC_VER < 1900
+
+#include <stdarg.h>
+#include <stdio.h>
+
+#define snprintf c99_snprintf
+#define vsnprintf c99_vsnprintf
+
+__inline int c99_vsnprintf(char *outBuf, size_t size, const char *format, va_list ap)
+{
+ int count = -1;
+
+ if (size != 0)
+ count = _vsnprintf_s(outBuf, size, _TRUNCATE, format, ap);
+ if (count == -1)
+ count = _vscprintf(format, ap);
+
+ return count;
+}
+
+__inline int c99_snprintf(char *outBuf, size_t size, const char *format, ...)
+{
+ int count;
+ va_list ap;
+
+ va_start(ap, format);
+ count = c99_vsnprintf(outBuf, size, format, ap);
+ va_end(ap);
+
+ return count;
+}
+
+#endif /* defined(_MSC_VER) && _MSC_VER < 1900 */
#define HAVE_SYS_STAT_H
#define HAVE__STAT
diff --git a/xsltproc/xsltproc.c b/xsltproc/xsltproc.c
index 9bd725d..e8b4f34 100644
--- a/xsltproc/xsltproc.c
+++ b/xsltproc/xsltproc.c
@@ -57,9 +57,6 @@
#if defined(_MSC_VER) || defined(__MINGW32__)
#include <winsock2.h>
#define gettimeofday(p1,p2)
-#if _MSC_VER < 1900
-#define snprintf _snprintf
-#endif
#endif /* _MS_VER */
#else /* WIN32 */
#if defined(HAVE_SYS_TIME_H)
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]