Parcourir la source

Fix recursive assignment of Textures and BitMapFont

Fixes #24213.
Rémi Verschelde il y a 6 ans
Parent
commit
402cfa983d
2 fichiers modifiés avec 6 ajouts et 0 suppressions
  1. 1 0
      scene/resources/font.cpp
  2. 5 0
      scene/resources/texture.cpp

+ 1 - 0
scene/resources/font.cpp

@@ -497,6 +497,7 @@ Size2 Font::get_string_size(const String &p_string) const {
 }
 void BitmapFont::set_fallback(const Ref<BitmapFont> &p_fallback) {
 
+	ERR_FAIL_COND(p_fallback == this);
 	fallback = p_fallback;
 }
 

+ 5 - 0
scene/resources/texture.cpp

@@ -943,6 +943,7 @@ uint32_t AtlasTexture::get_flags() const {
 
 void AtlasTexture::set_atlas(const Ref<Texture> &p_atlas) {
 
+	ERR_FAIL_COND(p_atlas == this);
 	if (atlas == p_atlas)
 		return;
 	atlas = p_atlas;
@@ -1182,6 +1183,7 @@ void LargeTexture::set_piece_offset(int p_idx, const Point2 &p_offset) {
 
 void LargeTexture::set_piece_texture(int p_idx, const Ref<Texture> &p_texture) {
 
+	ERR_FAIL_COND(p_texture == this);
 	ERR_FAIL_INDEX(p_idx, pieces.size());
 	pieces.write[p_idx].texture = p_texture;
 };
@@ -1747,6 +1749,7 @@ void ProxyTexture::_bind_methods() {
 
 void ProxyTexture::set_base(const Ref<Texture> &p_texture) {
 
+	ERR_FAIL_COND(p_texture == this);
 	base = p_texture;
 	if (base.is_valid()) {
 		VS::get_singleton()->texture_set_proxy(proxy, base->get_rid());
@@ -1862,6 +1865,8 @@ int AnimatedTexture::get_frames() const {
 }
 
 void AnimatedTexture::set_frame_texture(int p_frame, const Ref<Texture> &p_texture) {
+
+	ERR_FAIL_COND(p_texture == this);
 	ERR_FAIL_INDEX(p_frame, MAX_FRAMES);
 
 	RWLockWrite w(rw_lock);