Parcourir la source

Avoid repeated _copy_on_write() calls in Array::resize()

Updated Array::resize() to call ptrw() once before looping to initialize typed array elements, instead of accessing each through .write[].

(cherry picked from commit 4c3f2be16d00ef8bd21da2f4b4f57f1850a553a6)
aaronp64 il y a 6 jours
Parent
commit
4e62b91749
1 fichiers modifiés avec 2 ajouts et 1 suppressions
  1. 2 1
      core/variant/array.cpp

+ 2 - 1
core/variant/array.cpp

@@ -305,8 +305,9 @@ Error Array::resize(int p_new_size) {
 	int old_size = _p->array.size();
 	Error err = _p->array.resize_initialized(p_new_size);
 	if (!err && variant_type != Variant::NIL && variant_type != Variant::OBJECT) {
+		Variant *write = _p->array.ptrw();
 		for (int i = old_size; i < p_new_size; i++) {
-			VariantInternal::initialize(&_p->array.write[i], variant_type);
+			VariantInternal::initialize(&write[i], variant_type);
 		}
 	}
 	return err;