vsnprintf() tests correction: check that declaration is const-correct; merged the Metrowerks test with the one for the other compilers
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@35244 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
This commit is contained in:
parent
d66943923d
commit
b5887a837d
37
configure.in
37
configure.in
@ -3935,7 +3935,7 @@ AC_LANG_CPLUSPLUS
|
||||
|
||||
dnl check for vsnprintf() -- a safe version of vsprintf())
|
||||
dnl
|
||||
dnl the trouble here is that on some systems (notable HP-UX) this function is
|
||||
dnl the trouble here is that on some systems (e.g HP-UX 10) this function is
|
||||
dnl present in libc but not in the system headers and so AC_CHECK_FUNCS (which,
|
||||
dnl stupidly, provides a dummy function declaration inside its extension)
|
||||
dnl succeeds, even with C++ compiler, but the compilation of wxWidgets fails
|
||||
@ -3947,38 +3947,29 @@ if test "$ac_cv_func_vsnprintf" = "yes"; then
|
||||
dnl yes it is -- now check if it is in the headers
|
||||
AC_CACHE_CHECK([for vsnprintf declaration], wx_cv_func_vsnprintf_decl,
|
||||
[
|
||||
dnl our troubles are not over: HP-UX 11 prototypes vsnprintf() as
|
||||
dnl taking "char *" and not "const char *" while Metrowerks does
|
||||
dnl provide a correct vsnprintf declaration but in C++ mode it's
|
||||
dnl always in std namespace and so we have to bring it in scope
|
||||
AC_TRY_COMPILE(
|
||||
[
|
||||
#include <stdio.h>
|
||||
#include <stdarg.h>
|
||||
#ifdef __MSL__
|
||||
#if __MSL__ >= 0x6000
|
||||
namespace std {}
|
||||
using namespace std;
|
||||
#endif
|
||||
#endif
|
||||
],
|
||||
[
|
||||
char *buf;
|
||||
va_list ap;
|
||||
vsnprintf(buf, 10u, "%s", ap);
|
||||
const char *fmt = "%s";
|
||||
vsnprintf(buf, 10u, fmt, ap);
|
||||
],
|
||||
wx_cv_func_vsnprintf_decl=yes,
|
||||
[
|
||||
dnl Metrowerks does provide a vsnprintf declaration
|
||||
dnl but in C++ mode it's always in std namespace.
|
||||
dnl FIXME: Do we have any UNIX C++ compilers that would
|
||||
dnl fail this test if using namespace std; was
|
||||
dnl simply always included?
|
||||
AC_TRY_COMPILE(
|
||||
[
|
||||
#include <stdio.h>
|
||||
#include <stdarg.h>
|
||||
using namespace std;
|
||||
],
|
||||
[
|
||||
char *buf;
|
||||
va_list ap;
|
||||
vsnprintf(buf, 10u, "%s", ap);
|
||||
],
|
||||
wx_cv_func_vsnprintf_decl=yes,
|
||||
wx_cv_func_vsnprintf_decl=no
|
||||
)
|
||||
]
|
||||
wx_cv_func_vsnprintf_decl=no
|
||||
)
|
||||
]
|
||||
)
|
||||
|
Loading…
Reference in New Issue
Block a user