mirror of https://github.com/encounter/SDL.git
Clang static analysis builds should use C runtime directly.
This is a little macro magic to use malloc() directly instead of SDL_malloc(), etc, so static analysis tests that know about the C runtime can function properly, and understand that we are dealing with heap allocations, etc. This changed our static analysis report from 5 outstanding bugs to 30. 5x as many bugs were hidden by SDL_malloc() not being recognized as malloc() by the static analyzer!
This commit is contained in:
parent
2a1e422375
commit
a823982e02
|
@ -379,11 +379,6 @@ SDL_FORCE_INLINE void SDL_memset4(void *dst, Uint32 val, size_t dwords)
|
||||||
|
|
||||||
extern DECLSPEC void *SDLCALL SDL_memcpy(SDL_OUT_BYTECAP(len) void *dst, SDL_IN_BYTECAP(len) const void *src, size_t len);
|
extern DECLSPEC void *SDLCALL SDL_memcpy(SDL_OUT_BYTECAP(len) void *dst, SDL_IN_BYTECAP(len) const void *src, size_t len);
|
||||||
|
|
||||||
SDL_FORCE_INLINE void *SDL_memcpy4(SDL_OUT_BYTECAP(dwords*4) void *dst, SDL_IN_BYTECAP(dwords*4) const void *src, size_t dwords)
|
|
||||||
{
|
|
||||||
return SDL_memcpy(dst, src, dwords * 4);
|
|
||||||
}
|
|
||||||
|
|
||||||
extern DECLSPEC void *SDLCALL SDL_memmove(SDL_OUT_BYTECAP(len) void *dst, SDL_IN_BYTECAP(len) const void *src, size_t len);
|
extern DECLSPEC void *SDLCALL SDL_memmove(SDL_OUT_BYTECAP(len) void *dst, SDL_IN_BYTECAP(len) const void *src, size_t len);
|
||||||
extern DECLSPEC int SDLCALL SDL_memcmp(const void *s1, const void *s2, size_t len);
|
extern DECLSPEC int SDLCALL SDL_memcmp(const void *s1, const void *s2, size_t len);
|
||||||
|
|
||||||
|
@ -480,6 +475,39 @@ extern DECLSPEC char *SDLCALL SDL_iconv_string(const char *tocode,
|
||||||
#define SDL_iconv_utf8_ucs2(S) (Uint16 *)SDL_iconv_string("UCS-2-INTERNAL", "UTF-8", S, SDL_strlen(S)+1)
|
#define SDL_iconv_utf8_ucs2(S) (Uint16 *)SDL_iconv_string("UCS-2-INTERNAL", "UTF-8", S, SDL_strlen(S)+1)
|
||||||
#define SDL_iconv_utf8_ucs4(S) (Uint32 *)SDL_iconv_string("UCS-4-INTERNAL", "UTF-8", S, SDL_strlen(S)+1)
|
#define SDL_iconv_utf8_ucs4(S) (Uint32 *)SDL_iconv_string("UCS-4-INTERNAL", "UTF-8", S, SDL_strlen(S)+1)
|
||||||
|
|
||||||
|
/* force builds using Clang's static analysis tools to use literal C runtime
|
||||||
|
here, since there are possibly tests that are ineffective otherwise. */
|
||||||
|
#if defined(__clang_analyzer__) && !defined(SDL_DISABLE_ANALYZE_MACROS)
|
||||||
|
#define SDL_malloc malloc
|
||||||
|
#define SDL_calloc calloc
|
||||||
|
#define SDL_realloc realloc
|
||||||
|
#define SDL_free free
|
||||||
|
#define SDL_memset memset
|
||||||
|
#define SDL_memcpy memcpy
|
||||||
|
#define SDL_memmove memmove
|
||||||
|
#define SDL_memcmp memcmp
|
||||||
|
#define SDL_strlen strlen
|
||||||
|
#define SDL_strlcpy strlcpy
|
||||||
|
#define SDL_strlcat strlcat
|
||||||
|
#define SDL_strdup strdup
|
||||||
|
#define SDL_strchr strchr
|
||||||
|
#define SDL_strrchr strrchr
|
||||||
|
#define SDL_strstr strstr
|
||||||
|
#define SDL_strcmp strcmp
|
||||||
|
#define SDL_strncmp strncmp
|
||||||
|
#define SDL_strcasecmp strcasecmp
|
||||||
|
#define SDL_strncasecmp strncasecmp
|
||||||
|
#define SDL_sscanf sscanf
|
||||||
|
#define SDL_vsscanf vsscanf
|
||||||
|
#define SDL_snprintf snprintf
|
||||||
|
#define SDL_vsnprintf vsnprintf
|
||||||
|
#endif
|
||||||
|
|
||||||
|
SDL_FORCE_INLINE void *SDL_memcpy4(SDL_OUT_BYTECAP(dwords*4) void *dst, SDL_IN_BYTECAP(dwords*4) const void *src, size_t dwords)
|
||||||
|
{
|
||||||
|
return SDL_memcpy(dst, src, dwords * 4);
|
||||||
|
}
|
||||||
|
|
||||||
/* Ends C function definitions when using C++ */
|
/* Ends C function definitions when using C++ */
|
||||||
#ifdef __cplusplus
|
#ifdef __cplusplus
|
||||||
}
|
}
|
||||||
|
|
|
@ -18,6 +18,11 @@
|
||||||
misrepresented as being the original software.
|
misrepresented as being the original software.
|
||||||
3. This notice may not be removed or altered from any source distribution.
|
3. This notice may not be removed or altered from any source distribution.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
#if defined(__clang_analyzer__) && !defined(SDL_DISABLE_ANALYZE_MACROS)
|
||||||
|
#define SDL_DISABLE_ANALYZE_MACROS 1
|
||||||
|
#endif
|
||||||
|
|
||||||
#include "../SDL_internal.h"
|
#include "../SDL_internal.h"
|
||||||
|
|
||||||
#if defined(__WIN32__)
|
#if defined(__WIN32__)
|
||||||
|
|
|
@ -18,6 +18,11 @@
|
||||||
misrepresented as being the original software.
|
misrepresented as being the original software.
|
||||||
3. This notice may not be removed or altered from any source distribution.
|
3. This notice may not be removed or altered from any source distribution.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
#if defined(__clang_analyzer__) && !defined(SDL_DISABLE_ANALYZE_MACROS)
|
||||||
|
#define SDL_DISABLE_ANALYZE_MACROS 1
|
||||||
|
#endif
|
||||||
|
|
||||||
#include "../SDL_internal.h"
|
#include "../SDL_internal.h"
|
||||||
|
|
||||||
/* This file contains portable iconv functions for SDL */
|
/* This file contains portable iconv functions for SDL */
|
||||||
|
|
|
@ -18,6 +18,11 @@
|
||||||
misrepresented as being the original software.
|
misrepresented as being the original software.
|
||||||
3. This notice may not be removed or altered from any source distribution.
|
3. This notice may not be removed or altered from any source distribution.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
#if defined(__clang_analyzer__) && !defined(SDL_DISABLE_ANALYZE_MACROS)
|
||||||
|
#define SDL_DISABLE_ANALYZE_MACROS 1
|
||||||
|
#endif
|
||||||
|
|
||||||
#include "../SDL_internal.h"
|
#include "../SDL_internal.h"
|
||||||
|
|
||||||
/* This file contains portable memory management functions for SDL */
|
/* This file contains portable memory management functions for SDL */
|
||||||
|
|
|
@ -41,6 +41,11 @@
|
||||||
*
|
*
|
||||||
* Gareth McCaughan Peterhouse Cambridge 1998
|
* Gareth McCaughan Peterhouse Cambridge 1998
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
#if defined(__clang_analyzer__) && !defined(SDL_DISABLE_ANALYZE_MACROS)
|
||||||
|
#define SDL_DISABLE_ANALYZE_MACROS 1
|
||||||
|
#endif
|
||||||
|
|
||||||
#include "../SDL_internal.h"
|
#include "../SDL_internal.h"
|
||||||
|
|
||||||
/*
|
/*
|
||||||
|
|
|
@ -18,6 +18,11 @@
|
||||||
misrepresented as being the original software.
|
misrepresented as being the original software.
|
||||||
3. This notice may not be removed or altered from any source distribution.
|
3. This notice may not be removed or altered from any source distribution.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
#if defined(__clang_analyzer__) && !defined(SDL_DISABLE_ANALYZE_MACROS)
|
||||||
|
#define SDL_DISABLE_ANALYZE_MACROS 1
|
||||||
|
#endif
|
||||||
|
|
||||||
#include "../SDL_internal.h"
|
#include "../SDL_internal.h"
|
||||||
|
|
||||||
/* This file contains portable stdlib functions for SDL */
|
/* This file contains portable stdlib functions for SDL */
|
||||||
|
|
|
@ -18,6 +18,11 @@
|
||||||
misrepresented as being the original software.
|
misrepresented as being the original software.
|
||||||
3. This notice may not be removed or altered from any source distribution.
|
3. This notice may not be removed or altered from any source distribution.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
#if defined(__clang_analyzer__) && !defined(SDL_DISABLE_ANALYZE_MACROS)
|
||||||
|
#define SDL_DISABLE_ANALYZE_MACROS 1
|
||||||
|
#endif
|
||||||
|
|
||||||
#include "../SDL_internal.h"
|
#include "../SDL_internal.h"
|
||||||
|
|
||||||
/* This file contains portable string manipulation functions for SDL */
|
/* This file contains portable string manipulation functions for SDL */
|
||||||
|
|
Loading…
Reference in New Issue