]> granicus.if.org Git - gc/commitdiff
Fix unresolved vsnprintf in misc.c and snprintf in cordtest (DJGPP, VC)
authorIvan Maidanski <ivmai@mail.ru>
Wed, 18 Jun 2014 23:04:28 +0000 (03:04 +0400)
committerIvan Maidanski <ivmai@mail.ru>
Wed, 18 Jun 2014 23:04:28 +0000 (03:04 +0400)
* cord/tests/cordtest.c (GC_SNPRINTF, GC_SNPRINTF_BUFSZ_ARG): New
macro to workaround snprintf() missing in DJGPP and MS VC.
* cord/tests/cordtest.c (test_printf): Replace snprintf() with
GC_SNPRINTF and GC_SNPRINTF_BUFSZ_ARG.
* misc.c (GC_VSNPRINTF): Test DJGPP instead of NO_VSNPRINTF; refine
comment.

cord/tests/cordtest.c
misc.c

index cf5c696659a8590edce89dba67926785ea5de199..a5a0c30ec4d75d26ea2cdd3e24eeadd5f980ad0f 100644 (file)
@@ -204,6 +204,24 @@ void test_extras(void)
     }
 }
 
+#ifdef __DJGPP__
+  /* snprintf is missing in DJGPP (v2.0.3) */
+# define GC_SNPRINTF sprintf
+# define GC_SNPRINTF_BUFSZ_ARG(bufsz) /* empty */
+#else
+# if defined(_MSC_VER)
+#   if defined(_WIN32_WCE)
+      /* _snprintf is deprecated in WinCE */
+#     define GC_SNPRINTF StringCchPrintfA
+#   else
+#     define GC_SNPRINTF _snprintf
+#   endif
+# else
+#   define GC_SNPRINTF snprintf
+# endif
+# define GC_SNPRINTF_BUFSZ_ARG(bufsz) (bufsz),
+#endif
+
 void test_printf(void)
 {
     CORD result;
@@ -226,8 +244,8 @@ void test_printf(void)
     x = CORD_cat(x,x);
     if (CORD_sprintf(&result, "->%-120.78r!\n", x) != 124)
         ABORT("CORD_sprintf failed 3");
-    (void)snprintf(result2, sizeof(result2), "->%-120.78s!\n",
-                   CORD_to_char_star(x));
+    (void)GC_SNPRINTF(result2, GC_SNPRINTF_BUFSZ_ARG(sizeof(result2))
+                      "->%-120.78s!\n", CORD_to_char_star(x));
     result2[sizeof(result2) - 1] = '\0';
     if (CORD_cmp(result, result2) != 0)ABORT("CORD_sprintf goofed 5");
 }
diff --git a/misc.c b/misc.c
index f41384b2b7b97d23b3696beb94b2b6e4f1001315..01a7d841c772661885952d6c03be39a6e10abd62 100644 (file)
--- a/misc.c
+++ b/misc.c
@@ -1505,8 +1505,8 @@ GC_API void GC_CALL GC_enable_incremental(void)
 
 #define BUFSZ 1024
 
-#ifdef NO_VSNPRINTF
-  /* In case this function is missing (e.g., in DJGPP v2.0.3).  */
+#ifdef DJGPP
+  /* vsnprintf is missing in DJGPP (v2.0.3) */
 # define GC_VSNPRINTF(buf, bufsz, format, args) vsprintf(buf, format, args)
 #elif defined(_MSC_VER)
 # ifdef MSWINCE