summaryrefslogtreecommitdiff
path: root/core
diff options
context:
space:
mode:
authorMarcin Zawiejski <dragmz@gmail.com>2018-08-21 00:47:26 +0200
committerMarcin Zawiejski <dragmz@gmail.com>2018-08-21 13:25:50 +0200
commita1d2fbdeb29dbc0f7fa2940f9f66c161cf723180 (patch)
tree6e664eff9bccdf5dc42a3a65342fe8cbfa734ff5 /core
parent238b70e2db7e376ce8b627bbba5770535270da30 (diff)
== and != operators for Ref<T> / T*
This is to prevent crashes for code like: ... void Material::set_next_pass(const Ref<Material> &p_pass) { ERR_FAIL_COND(p_pass == this); ... that's been fixed in 031f763d4fda4e0dbcdf90a170aad3124c50c062
Diffstat (limited to 'core')
-rw-r--r--core/reference.h7
1 files changed, 7 insertions, 0 deletions
diff --git a/core/reference.h b/core/reference.h
index 0d6b1ced6e..25e02180fa 100644
--- a/core/reference.h
+++ b/core/reference.h
@@ -87,6 +87,13 @@ class Ref {
//virtual Reference * get_reference() const { return reference; }
public:
+ _FORCE_INLINE_ bool operator==(const T *p_ptr) const {
+ return reference == p_ptr;
+ }
+ _FORCE_INLINE_ bool operator!=(const T *p_ptr) const {
+ return reference != p_ptr;
+ }
+
_FORCE_INLINE_ bool operator<(const Ref<T> &p_r) const {
return reference < p_r.reference;