changeset 32888:cc4c72081cb8

vasnprintf: Fix multiple test failures on mingw.
author Bruno Haible <bruno@clisp.org>
date Sat, 10 Apr 2010 21:40:23 +0200
parents 9519897c3d32
children a927679888c3
files ChangeLog lib/vasnprintf.c
diffstat 2 files changed, 23 insertions(+), 4 deletions(-) [+]
line wrap: on
line diff
--- a/ChangeLog	Sat Apr 10 21:11:00 2010 +0200
+++ b/ChangeLog	Sat Apr 10 21:40:23 2010 +0200
@@ -1,3 +1,9 @@
+2010-04-10  Bruno Haible  <bruno@clisp.org>
+
+	vasnprintf: Fix multiple test failures on mingw.
+	* lib/vasnprintf.c (SNPRINTF) [mingw]: Define to snprintf, not
+	_snprintf, or snwprintf, not _snwprintf.
+
 2010-04-10  Bruno Haible  <bruno@clisp.org>
 
 	write: Fix a C++ test error on mingw.
--- a/lib/vasnprintf.c	Sat Apr 10 21:11:00 2010 +0200
+++ b/lib/vasnprintf.c	Sat Apr 10 21:40:23 2010 +0200
@@ -148,8 +148,14 @@
 # define USE_SNPRINTF 1
 # if HAVE_DECL__SNWPRINTF
    /* On Windows, the function swprintf() has a different signature than
-      on Unix; we use the _snwprintf() function instead.  */
-#  define SNPRINTF _snwprintf
+      on Unix; we use the function _snwprintf() or - on mingw - snwprintf()
+      instead.  The mingw function snwprintf() has fewer bugs than the
+      MSVCRT function _snwprintf(), so prefer that.  */
+#  if defined __MINGW32__
+#   define SNPRINTF snwprintf
+#  else
+#   define SNPRINTF _snwprintf
+#  endif
 # else
    /* Unix.  */
 #  define SNPRINTF swprintf
@@ -167,8 +173,15 @@
 #  define USE_SNPRINTF 0
 # endif
 # if HAVE_DECL__SNPRINTF
-   /* Windows.  */
-#  define SNPRINTF _snprintf
+   /* Windows.  The mingw function snprintf() has fewer bugs than the MSVCRT
+      function _snprintf(), so prefer that.  */
+#  if defined __MINGW32__
+#   define SNPRINTF snprintf
+    /* Here we need to call the native snprintf, not rpl_snprintf.  */
+#   undef snprintf
+#  else
+#   define SNPRINTF _snprintf
+#  endif
 # else
    /* Unix.  */
 #  define SNPRINTF snprintf