Merge pull request #58427 from lawnjelly/safe_vector2

This commit is contained in:
Rémi Verschelde 2022-03-07 12:39:28 +01:00 committed by GitHub
commit 445339e1b2
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
3 changed files with 14 additions and 3 deletions

View file

@ -208,6 +208,7 @@ void _err_flush_stdout();
#define CRASH_BAD_INDEX(m_index, m_size) \ #define CRASH_BAD_INDEX(m_index, m_size) \
if (unlikely((m_index) < 0 || (m_index) >= (m_size))) { \ if (unlikely((m_index) < 0 || (m_index) >= (m_size))) { \
_err_print_index_error(FUNCTION_STR, __FILE__, __LINE__, m_index, m_size, _STR(m_index), _STR(m_size), "", true); \ _err_print_index_error(FUNCTION_STR, __FILE__, __LINE__, m_index, m_size, _STR(m_index), _STR(m_size), "", true); \
_err_flush_stdout(); \
GENERATE_TRAP \ GENERATE_TRAP \
} else \ } else \
((void)0) ((void)0)
@ -221,6 +222,7 @@ void _err_flush_stdout();
#define CRASH_BAD_INDEX_MSG(m_index, m_size, m_msg) \ #define CRASH_BAD_INDEX_MSG(m_index, m_size, m_msg) \
if (unlikely((m_index) < 0 || (m_index) >= (m_size))) { \ if (unlikely((m_index) < 0 || (m_index) >= (m_size))) { \
_err_print_index_error(FUNCTION_STR, __FILE__, __LINE__, m_index, m_size, _STR(m_index), _STR(m_size), m_msg, true); \ _err_print_index_error(FUNCTION_STR, __FILE__, __LINE__, m_index, m_size, _STR(m_index), _STR(m_size), m_msg, true); \
_err_flush_stdout(); \
GENERATE_TRAP \ GENERATE_TRAP \
} else \ } else \
((void)0) ((void)0)
@ -234,6 +236,7 @@ void _err_flush_stdout();
#define CRASH_BAD_UNSIGNED_INDEX(m_index, m_size) \ #define CRASH_BAD_UNSIGNED_INDEX(m_index, m_size) \
if (unlikely((m_index) >= (m_size))) { \ if (unlikely((m_index) >= (m_size))) { \
_err_print_index_error(FUNCTION_STR, __FILE__, __LINE__, m_index, m_size, _STR(m_index), _STR(m_size), "", true); \ _err_print_index_error(FUNCTION_STR, __FILE__, __LINE__, m_index, m_size, _STR(m_index), _STR(m_size), "", true); \
_err_flush_stdout(); \
GENERATE_TRAP \ GENERATE_TRAP \
} else \ } else \
((void)0) ((void)0)
@ -305,6 +308,7 @@ void _err_flush_stdout();
#define CRASH_COND(m_cond) \ #define CRASH_COND(m_cond) \
if (unlikely(m_cond)) { \ if (unlikely(m_cond)) { \
_err_print_error(FUNCTION_STR, __FILE__, __LINE__, "FATAL: Condition \"" _STR(m_cond) "\" is true."); \ _err_print_error(FUNCTION_STR, __FILE__, __LINE__, "FATAL: Condition \"" _STR(m_cond) "\" is true."); \
_err_flush_stdout(); \
GENERATE_TRAP \ GENERATE_TRAP \
} else \ } else \
((void)0) ((void)0)
@ -316,6 +320,7 @@ void _err_flush_stdout();
#define CRASH_COND_MSG(m_cond, m_msg) \ #define CRASH_COND_MSG(m_cond, m_msg) \
if (unlikely(m_cond)) { \ if (unlikely(m_cond)) { \
_err_print_error(FUNCTION_STR, __FILE__, __LINE__, "FATAL: Condition \"" _STR(m_cond) "\" is true.", m_msg); \ _err_print_error(FUNCTION_STR, __FILE__, __LINE__, "FATAL: Condition \"" _STR(m_cond) "\" is true.", m_msg); \
_err_flush_stdout(); \
GENERATE_TRAP \ GENERATE_TRAP \
} else \ } else \
((void)0) ((void)0)
@ -427,7 +432,7 @@ void _err_flush_stdout();
#define CRASH_NOW() \ #define CRASH_NOW() \
if (true) { \ if (true) { \
_err_print_error(FUNCTION_STR, __FILE__, __LINE__, "FATAL: Method failed."); \ _err_print_error(FUNCTION_STR, __FILE__, __LINE__, "FATAL: Method failed."); \
void _err_flush_stdout(); \ _err_flush_stdout(); \
GENERATE_TRAP \ GENERATE_TRAP \
} else \ } else \
((void)0) ((void)0)
@ -439,7 +444,7 @@ void _err_flush_stdout();
#define CRASH_NOW_MSG(m_msg) \ #define CRASH_NOW_MSG(m_msg) \
if (true) { \ if (true) { \
_err_print_error(FUNCTION_STR, __FILE__, __LINE__, "FATAL: Method failed.", m_msg); \ _err_print_error(FUNCTION_STR, __FILE__, __LINE__, "FATAL: Method failed.", m_msg); \
void _err_flush_stdout(); \ _err_flush_stdout(); \
GENERATE_TRAP \ GENERATE_TRAP \
} else \ } else \
((void)0) ((void)0)
@ -523,7 +528,7 @@ void _err_flush_stdout();
#define DEV_ASSERT(m_cond) \ #define DEV_ASSERT(m_cond) \
if (unlikely(!(m_cond))) { \ if (unlikely(!(m_cond))) { \
_err_print_error(FUNCTION_STR, __FILE__, __LINE__, "FATAL: DEV_ASSERT failed \"" _STR(m_cond) "\" is false."); \ _err_print_error(FUNCTION_STR, __FILE__, __LINE__, "FATAL: DEV_ASSERT failed \"" _STR(m_cond) "\" is false."); \
void _err_flush_stdout(); \ _err_flush_stdout(); \
GENERATE_TRAP \ GENERATE_TRAP \
} else \ } else \
((void)0) ((void)0)

View file

@ -60,9 +60,11 @@ struct _NO_DISCARD_CLASS_ Vector2 {
}; };
_FORCE_INLINE_ real_t &operator[](int p_idx) { _FORCE_INLINE_ real_t &operator[](int p_idx) {
DEV_ASSERT((unsigned int)p_idx < 2);
return coord[p_idx]; return coord[p_idx];
} }
_FORCE_INLINE_ const real_t &operator[](int p_idx) const { _FORCE_INLINE_ const real_t &operator[](int p_idx) const {
DEV_ASSERT((unsigned int)p_idx < 2);
return coord[p_idx]; return coord[p_idx];
} }
@ -291,9 +293,11 @@ struct _NO_DISCARD_CLASS_ Vector2i {
}; };
_FORCE_INLINE_ int &operator[](int p_idx) { _FORCE_INLINE_ int &operator[](int p_idx) {
DEV_ASSERT((unsigned int)p_idx < 2);
return coord[p_idx]; return coord[p_idx];
} }
_FORCE_INLINE_ const int &operator[](int p_idx) const { _FORCE_INLINE_ const int &operator[](int p_idx) const {
DEV_ASSERT((unsigned int)p_idx < 2);
return coord[p_idx]; return coord[p_idx];
} }

View file

@ -56,10 +56,12 @@ struct _NO_DISCARD_CLASS_ Vector3 {
}; };
_FORCE_INLINE_ const real_t &operator[](int p_axis) const { _FORCE_INLINE_ const real_t &operator[](int p_axis) const {
DEV_ASSERT((unsigned int)p_axis < 3);
return coord[p_axis]; return coord[p_axis];
} }
_FORCE_INLINE_ real_t &operator[](int p_axis) { _FORCE_INLINE_ real_t &operator[](int p_axis) {
DEV_ASSERT((unsigned int)p_axis < 3);
return coord[p_axis]; return coord[p_axis];
} }