Pārlūkot izejas kodu

Merge pull request #34618 from qarmin/vector_please_dont_crash

Don't use constant reference in Vector push_back, insert and append_array
Rémi Verschelde 5 gadi atpakaļ
vecāks
revīzija
bde52cc688
2 mainītis faili ar 8 papildinājumiem un 5 dzēšanām
  1. 5 5
      core/vector.h
  2. 3 0
      editor/import/editor_scene_importer_gltf.h

+ 5 - 5
core/vector.h

@@ -63,7 +63,7 @@ private:
 	CowData<T> _cowdata;
 
 public:
-	bool push_back(const T &p_elem);
+	bool push_back(T p_elem);
 
 	void remove(int p_index) { _cowdata.remove(p_index); }
 	void erase(const T &p_val) {
@@ -83,10 +83,10 @@ public:
 	_FORCE_INLINE_ int size() const { return _cowdata.size(); }
 	Error resize(int p_size) { return _cowdata.resize(p_size); }
 	_FORCE_INLINE_ const T &operator[](int p_index) const { return _cowdata.get(p_index); }
-	Error insert(int p_pos, const T &p_val) { return _cowdata.insert(p_pos, p_val); }
+	Error insert(int p_pos, T p_val) { return _cowdata.insert(p_pos, p_val); }
 	int find(const T &p_val, int p_from = 0) const { return _cowdata.find(p_val, p_from); }
 
-	void append_array(const Vector<T> &p_other);
+	void append_array(Vector<T> p_other);
 
 	template <class C>
 	void sort_custom() {
@@ -136,7 +136,7 @@ void Vector<T>::invert() {
 }
 
 template <class T>
-void Vector<T>::append_array(const Vector<T> &p_other) {
+void Vector<T>::append_array(Vector<T> p_other) {
 	const int ds = p_other.size();
 	if (ds == 0)
 		return;
@@ -147,7 +147,7 @@ void Vector<T>::append_array(const Vector<T> &p_other) {
 }
 
 template <class T>
-bool Vector<T>::push_back(const T &p_elem) {
+bool Vector<T>::push_back(T p_elem) {
 
 	Error err = resize(size() + 1);
 	ERR_FAIL_COND_V(err, true);

+ 3 - 0
editor/import/editor_scene_importer_gltf.h

@@ -172,7 +172,10 @@ class EditorSceneImporterGLTF : public EditorSceneImporter {
 			min = 0;
 			max = 0;
 			sparse_count = 0;
+			sparse_indices_buffer_view = 0;
 			sparse_indices_byte_offset = 0;
+			sparse_indices_component_type = 0;
+			sparse_values_buffer_view = 0;
 			sparse_values_byte_offset = 0;
 		}
 	};