Quellcode durchsuchen

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[].
aaronp64 vor 1 Monat
Ursprung
Commit
4c3f2be16d
1 geänderte Dateien mit 2 neuen und 1 gelöschten Zeilen
  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();
 	int old_size = _p->array.size();
 	Error err = _p->array.resize_initialized(p_new_size);
 	Error err = _p->array.resize_initialized(p_new_size);
 	if (!err && variant_type != Variant::NIL && variant_type != Variant::OBJECT) {
 	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++) {
 		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;
 	return err;