summaryrefslogtreecommitdiffstats
path: root/core/math/vector2.h
diff options
context:
space:
mode:
authorlawnjelly <lawnjelly@gmail.com>2022-03-07 11:15:45 +0000
committerlawnjelly <lawnjelly@gmail.com>2022-03-07 11:15:45 +0000
commit0565676893aa761948e2a039c993e1d9d51f31f1 (patch)
treed2a6d32661f7964a5458b665c884cb528904742d /core/math/vector2.h
parent6c3170e875bcb2606f08cde731f8b800801ef751 (diff)
downloadredot-engine-0565676893aa761948e2a039c993e1d9d51f31f1.tar.gz
Protection for array operator for Vector2 / 3 in DEV builds
A previous PR had changed the array operator to give unbounded access. This could cause crashes where old code depended on this previous safe behaviour. This PR adds DEV_ASSERT macros for out of bound access to DEV builds, allowing us to quickly identify bugs in calling code, without affecting performance in release or release_debug editor builds.
Diffstat (limited to 'core/math/vector2.h')
-rw-r--r--core/math/vector2.h3
1 files changed, 3 insertions, 0 deletions
diff --git a/core/math/vector2.h b/core/math/vector2.h
index a2680b84fc..bd67299f33 100644
--- a/core/math/vector2.h
+++ b/core/math/vector2.h
@@ -31,6 +31,7 @@
#ifndef VECTOR2_H
#define VECTOR2_H
+#include "core/error/error_macros.h"
#include "core/math/math_funcs.h"
class String;
@@ -60,9 +61,11 @@ struct _NO_DISCARD_ Vector2 {
};
_FORCE_INLINE_ real_t &operator[](int p_idx) {
+ DEV_ASSERT((unsigned int)p_idx < 2);
return coord[p_idx];
}
_FORCE_INLINE_ const real_t &operator[](int p_idx) const {
+ DEV_ASSERT((unsigned int)p_idx < 2);
return coord[p_idx];
}