Skip to content

Commit 7723226

Browse files
committed
Merge pull request #110215 from WhalesState/resource-deep-copy
Fix Resource duplicate calls `ImageTexture::set_image` with an invalid image.
2 parents 7ac73a6 + 0d32849 commit 7723226

File tree

2 files changed

+17
-3
lines changed

2 files changed

+17
-3
lines changed

scene/resources/image_texture.cpp

Lines changed: 16 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -83,7 +83,13 @@ Ref<ImageTexture> ImageTexture::create_from_image(const Ref<Image> &p_image) {
8383
}
8484

8585
void ImageTexture::set_image(const Ref<Image> &p_image) {
86-
ERR_FAIL_COND_MSG(p_image.is_null() || p_image->is_empty(), "Invalid image");
86+
if (p_image.is_null() || p_image->is_empty()) {
87+
if (image_stored) {
88+
ERR_PRINT("Invalid image");
89+
}
90+
return;
91+
}
92+
8793
w = p_image->get_width();
8894
h = p_image->get_height();
8995
format = p_image->get_format();
@@ -474,8 +480,13 @@ TypedArray<Image> ImageTexture3D::_get_images() const {
474480
}
475481

476482
void ImageTexture3D::_set_images(const TypedArray<Image> &p_images) {
477-
int new_layers = p_images.size();
478-
ERR_FAIL_COND(new_layers == 0);
483+
if (p_images.size() == 0) {
484+
if (images_stored) {
485+
ERR_PRINT("Invalid images");
486+
}
487+
return;
488+
}
489+
479490
Ref<Image> img_base = p_images[0];
480491
ERR_FAIL_COND(img_base.is_null());
481492

@@ -504,6 +515,8 @@ void ImageTexture3D::_set_images(const TypedArray<Image> &p_images) {
504515

505516
Error err = _create(new_format, new_width, new_height, new_depth, new_mipmaps, p_images);
506517
ERR_FAIL_COND(err != OK);
518+
519+
images_stored = true;
507520
}
508521

509522
void ImageTexture3D::_bind_methods() {

scene/resources/image_texture.h

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -134,6 +134,7 @@ class ImageTexture3D : public Texture3D {
134134
int height = 1;
135135
int depth = 1;
136136
bool mipmaps = false;
137+
bool images_stored = false;
137138

138139
TypedArray<Image> _get_images() const;
139140
void _set_images(const TypedArray<Image> &p_images);

0 commit comments

Comments
 (0)