Przeglądaj źródła

Merge pull request #94628 from Chaosus/rendering_fix_crash

Fix crash when assigning more textures than expected to texture array
Rémi Verschelde 1 rok temu
rodzic
commit
ad1955a63d

+ 2 - 1
drivers/gles3/storage/material_storage.cpp

@@ -874,7 +874,8 @@ void MaterialData::update_textures(const HashMap<StringName, Variant> &p_paramet
 				if (V->value.is_array()) {
 					Array array = (Array)V->value;
 					if (uniform_array_size > 0) {
-						for (int j = 0; j < array.size(); j++) {
+						int size = MIN(uniform_array_size, array.size());
+						for (int j = 0; j < size; j++) {
 							textures.push_back(array[j]);
 						}
 					} else {

+ 2 - 1
servers/rendering/renderer_rd/storage_rd/material_storage.cpp

@@ -807,7 +807,8 @@ void MaterialStorage::MaterialData::update_textures(const HashMap<StringName, Va
 				if (V->value.is_array()) {
 					Array array = (Array)V->value;
 					if (uniform_array_size > 0) {
-						for (int j = 0; j < array.size(); j++) {
+						int size = MIN(uniform_array_size, array.size());
+						for (int j = 0; j < size; j++) {
 							textures.push_back(array[j]);
 						}
 					} else {