mirror of
https://github.com/Ed94/raddebugger.git
synced 2026-08-14 17:28:07 +00:00
assert element size does not overflow the simple buffer in radsort
This commit is contained in:
Vendored
+7
@@ -112,8 +112,15 @@ typedef void rs_small_sort_func( void * left, size_t n, size_t element_size, is_
|
||||
#define RS_SMALL_FLIP_TO_INSERTION_GT_SIZE sizeof( size_t )
|
||||
typedef struct RS_MAX_BUBBLE_BUF { char b[RS_SMALL_FLIP_TO_INSERTION_GT_SIZE]; } RS_MAX_BUBBLE_BUF;
|
||||
|
||||
#if _MSC_VER
|
||||
# define radsort_break_ __debugbreak()
|
||||
#else
|
||||
# define radsort_break_ ___builtin_trap()
|
||||
#endif
|
||||
|
||||
#define radsort( start, len, is_before_func ) \
|
||||
do { \
|
||||
if (sizeof((start)[0]) > sizeof(RS_MAX_SIMPLE_BUF)) { radsort_break_; } \
|
||||
char __rs_tmp[ sizeof( (start)[0] ) ]; \
|
||||
radsortinternal( start, len, sizeof( (start)[0] ), \
|
||||
is_before_func, \
|
||||
|
||||
Reference in New Issue
Block a user