summaryrefslogtreecommitdiffstats
path: root/core/vector.h
diff options
context:
space:
mode:
authorPedro J. Estébanez <pedrojrulez@gmail.com>2017-05-26 21:11:16 +0200
committerPedro J. Estébanez <pedrojrulez@gmail.com>2017-07-05 09:31:44 +0200
commit211c4518903d82068c061943064824ac5595fd38 (patch)
tree5c332554f6df617d5d9d9eb81f1e471517231fbf /core/vector.h
parent9fa4f1c54c6d528192e7ed04354d5ce2c733d99a (diff)
downloadredot-engine-211c4518903d82068c061943064824ac5595fd38.tar.gz
Implement well-defined handling of unrecoverable errors
Plus the addition of some convenience CRASH_* error macros. Plus transient avoidance of the flood of warnings emitted by Clang when checking 'this' for NULL. Plus explanation about the do-while(0) loop in some error macros.
Diffstat (limited to 'core/vector.h')
-rw-r--r--core/vector.h11
1 files changed, 3 insertions, 8 deletions
diff --git a/core/vector.h b/core/vector.h
index fe1c1b05dd..5eed8dce96 100644
--- a/core/vector.h
+++ b/core/vector.h
@@ -134,10 +134,7 @@ public:
inline T &operator[](int p_index) {
- if (p_index < 0 || p_index >= size()) {
- T &aux = *((T *)0); //nullreturn
- ERR_FAIL_COND_V(p_index < 0 || p_index >= size(), aux);
- }
+ CRASH_BAD_INDEX(p_index, size());
_copy_on_write(); // wants to write, so copy on write.
@@ -146,10 +143,8 @@ public:
inline const T &operator[](int p_index) const {
- if (p_index < 0 || p_index >= size()) {
- const T &aux = *((T *)0); //nullreturn
- ERR_FAIL_COND_V(p_index < 0 || p_index >= size(), aux);
- }
+ CRASH_BAD_INDEX(p_index, size());
+
// no cow needed, since it's reading
return _get_data()[p_index];
}