fix the safe function behavior
This commit is contained in:
28
tinyxml2.h
28
tinyxml2.h
@@ -29,6 +29,7 @@ distribution.
|
||||
#include <climits>
|
||||
#include <cstdio>
|
||||
#include <cstring>
|
||||
#include <cstdarg>
|
||||
#else
|
||||
// Not completely sure all the interesting systems
|
||||
// can handle the new headers; can switch this if
|
||||
@@ -70,27 +71,30 @@ distribution.
|
||||
#endif
|
||||
|
||||
|
||||
// Deprecated library function hell. Compilers want to use the
|
||||
// new safe versions. This probably doesn't fully address the problem,
|
||||
// but it gets closer. There are too many compilers for me to fully
|
||||
// test. If you get compilation troubles, undefine TIXML_SAFE
|
||||
|
||||
#if defined(_MSC_VER) && (_MSC_VER >= 1400 )
|
||||
// Microsoft visual studio, version 2005 and higher.
|
||||
#define TIXML_SNPRINTF _snprintf_s
|
||||
/*int _snprintf_s(
|
||||
char *buffer,
|
||||
size_t sizeOfBuffer,
|
||||
size_t count,
|
||||
const char *format [,
|
||||
argument] ...
|
||||
);*/
|
||||
inline int TIXML_SNPRINTF( char* buffer, size_t size, const char* format, ... ) {
|
||||
va_list va;
|
||||
va_start( va, format );
|
||||
int result = vsnprintf_s( buffer, size, _TRUNCATE, format, va );
|
||||
va_end( va );
|
||||
return result;
|
||||
}
|
||||
#define TIXML_SSCANF sscanf_s
|
||||
#elif defined(_MSC_VER) && (_MSC_VER >= 1200 )
|
||||
// Microsoft visual studio, version 6 and higher.
|
||||
//#pragma message( "Using _sn* functions." )
|
||||
#define TIXML_SNPRINTF _snprintf
|
||||
#define TIXML_SSCANF sscanf
|
||||
#elif defined(__GNUC__) && (__GNUC__ >= 3 )
|
||||
// GCC version 3 and higher
|
||||
//#warning( "Using sn* functions." )
|
||||
#define TIXML_SNPRINTF snprintf
|
||||
#define TIXML_SSCANF sscanf
|
||||
#else
|
||||
#define TIXML_SNPRINTF snprintf
|
||||
#define TIXML_SNPRINTF snprintf( buf, size, x ) snprintf( buf, size, x )
|
||||
#define TIXML_SSCANF sscanf
|
||||
#endif
|
||||
|
||||
|
||||
Reference in New Issue
Block a user