-
-// wxVsnprintf() needs to use a *system* implementation of swnprintf()
-// in order to perform some internal tasks.
-// NB: we cannot just use wxSnprintf() because for some systems it maybe
-// implemented later in this file using wxVsnprintf() and that would
-// result in an endless recursion and thus in a stack overflow
-#if wxUSE_UNICODE
- #if defined(__WINDOWS__) && !defined(HAVE_SWPRINTF)
- // all compilers under Windows should have swprintf()
- #define HAVE_SWPRINTF
- #endif
-
- // NB: MSVC 6 has only non-standard swprintf() declaration and while MSVC 7
- // and 7.1 do have the standard one, it's completely broken unless
- // /Zc:wchar_t is used while the other one works so use it instead, and
- // only VC8 has a working standard-compliant swprintf()
- #if defined(__WXWINCE__) || \
- (defined(__VISUALC__) && __VISUALC__ < 1400) || \
- defined(__GNUWIN32__) || \
- defined(__BORLANDC__)
- #ifndef HAVE_BROKEN_SWPRINTF_DECL
- #define HAVE_BROKEN_SWPRINTF_DECL
- #endif
- #endif
-
- // problem: on some systems swprintf takes the 'max' argument while on
- // others it doesn't
- #if defined(HAVE_BROKEN_SWPRINTF_DECL)
- // like when using sprintf(), since 'max' is not used, wxVsnprintf()
- // should always ensure that 'buff' is big enough for all common needs
- #define system_sprintf(buff, max, flags, data) \
- ::swprintf(buff, flags, data)
-
- #define SYSTEM_SPRINTF_IS_UNSAFE
- #else
- #if !defined(HAVE_SWPRINTF)
- #error wxVsnprintf() needs a system swprintf() implementation!
- #endif
-
- #define system_sprintf(buff, max, flags, data) \
- ::swprintf(buff, max, flags, data)
- #endif
-#else // !wxUSE_UNICODE
- #if defined(__VISUALC__) || \
- (defined(__BORLANDC__) && __BORLANDC__ >= 0x540)
- #define system_sprintf(buff, max, flags, data) \
- ::_snprintf(buff, max, flags, data)
- #elif defined(HAVE_SNPRINTF)
- #define system_sprintf(buff, max, flags, data) \
- ::snprintf(buff, max, flags, data)
- #else // NB: at least sprintf() should always be available
- // since 'max' is not used in this case, wxVsnprintf() should always
- // ensure that 'buff' is big enough for all common needs
- // (see wxMAX_SVNPRINTF_FLAGBUFFER_LEN and wxMAX_SVNPRINTF_SCRATCHBUFFER_LEN)
- #define system_sprintf(buff, max, flags, data) \
- ::sprintf(buff, flags, data)
-
- #define SYSTEM_SPRINTF_IS_UNSAFE
- #endif
-#endif // wxUSE_UNICODE/!wxUSE_UNICODE
-
-
+// prefer snprintf over sprintf
+#if defined(__VISUALC__) || \
+ (defined(__BORLANDC__) && __BORLANDC__ >= 0x540)
+ #define system_sprintf(buff, max, flags, data) \
+ ::_snprintf(buff, max, flags, data)
+#elif defined(HAVE_SNPRINTF)
+ #define system_sprintf(buff, max, flags, data) \
+ ::snprintf(buff, max, flags, data)
+#else // NB: at least sprintf() should always be available
+ // since 'max' is not used in this case, wxVsnprintf() should always
+ // ensure that 'buff' is big enough for all common needs
+ // (see wxMAX_SVNPRINTF_FLAGBUFFER_LEN and wxMAX_SVNPRINTF_SCRATCHBUFFER_LEN)
+ #define system_sprintf(buff, max, flags, data) \
+ ::sprintf(buff, flags, data)
+
+ #define SYSTEM_SPRINTF_IS_UNSAFE
+#endif