view modules/json/jansson/patch/snprintf.patch @ 523:d7d434ab9114

Json: resurrection
author David Demelier <markand@malikania.fr>
date Wed, 01 Jun 2016 17:09:12 +0200
parents
children
line wrap: on
line source

diff --git a/cmake/jansson_private_config.h.cmake b/cmake/jansson_private_config.h.cmake
index ee1078f..ac7318f 100644
--- a/cmake/jansson_private_config.h.cmake
+++ b/cmake/jansson_private_config.h.cmake
@@ -49,6 +49,20 @@
 
 #cmakedefine HAVE_SNPRINTF 1
 
+/* snprintf should not be defined as macro with MSC_VER >= 1900 */
+#if defined(_WIN32) || defined(WIN32)
+#  if defined(_MSC_VER)  /* MS compiller */
+#    if (_MSC_VER < 1900)  /* snprintf not introduced */
+#      if !defined(snprintf)
+#        define snprintf _snprintf
+#        define HAVE_SNPRINTF 1 /* snprintf defined manually */
+#      endif
+#    else
+#      define HAVE_SNPRINTF 1 /* snprintf available via sdk */
+#    endif
+#  endif
+#endif
+
 #ifndef HAVE_SNPRINTF
 #  define snprintf @JSON_SNPRINTF@
 #endif
diff --git a/src/jansson_private.h b/src/jansson_private.h
index e100726..ccb3a57 100644
--- a/src/jansson_private.h
+++ b/src/jansson_private.h
@@ -90,10 +90,20 @@ char *jsonp_strndup(const char *str, size_t length);
 char *jsonp_strdup(const char *str);
 char *jsonp_strndup(const char *str, size_t len);
 
+
 /* Windows compatibility */
-#ifdef _WIN32
-#define snprintf _snprintf
-#define vsnprintf _vsnprintf
+#if defined(_WIN32) || defined(WIN32)
+#  if defined(_MSC_VER)  /* MS compiller */
+#    if (_MSC_VER < 1900) && !defined(snprintf)  /* snprintf not defined yet & not introduced */
+#      define snprintf _snprintf
+#    endif
+#    if (_MSC_VER < 1500) && !defined(vsnprintf)  /* vsnprintf not defined yet & not introduced */
+#      define vsnprintf(b,c,f,a) _vsnprintf(b,c,f,a)
+#    endif
+#  else  /* Other Windows compiller, old definition */
+#    define snprintf _snprintf
+#    define vsnprintf _vsnprintf
+#  endif
 #endif
 
 #endif