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 )
|
#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;
|
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 ) \
|
#define radsort( start, len, is_before_func ) \
|
||||||
do { \
|
do { \
|
||||||
|
if (sizeof((start)[0]) > sizeof(RS_MAX_SIMPLE_BUF)) { radsort_break_; } \
|
||||||
char __rs_tmp[ sizeof( (start)[0] ) ]; \
|
char __rs_tmp[ sizeof( (start)[0] ) ]; \
|
||||||
radsortinternal( start, len, sizeof( (start)[0] ), \
|
radsortinternal( start, len, sizeof( (start)[0] ), \
|
||||||
is_before_func, \
|
is_before_func, \
|
||||||
|
|||||||
Reference in New Issue
Block a user