Bläddra i källkod

Fix crash in headless mode

Haoyu Qiu 3 år sedan
förälder
incheckning
82f7f2c46c

+ 2 - 0
scene/3d/mesh_instance_3d.cpp

@@ -369,6 +369,8 @@ void MeshInstance3D::create_debug_tangents() {
 
 	for (int i = 0; i < mesh->get_surface_count(); i++) {
 		Array arrays = mesh->surface_get_arrays(i);
+		ERR_CONTINUE(arrays.size() != Mesh::ARRAY_MAX);
+
 		Vector<Vector3> verts = arrays[Mesh::ARRAY_VERTEX];
 		Vector<Vector3> norms = arrays[Mesh::ARRAY_NORMAL];
 		if (norms.size() == 0) {

+ 2 - 0
scene/resources/navigation_mesh.cpp

@@ -41,6 +41,8 @@ void NavigationMesh::create_from_mesh(const Ref<Mesh> &p_mesh) {
 			continue;
 		}
 		Array arr = p_mesh->surface_get_arrays(i);
+		ERR_CONTINUE(arr.size() != Mesh::ARRAY_MAX);
+
 		Vector<Vector3> varr = arr[Mesh::ARRAY_VERTEX];
 		Vector<int> iarr = arr[Mesh::ARRAY_INDEX];
 		if (varr.size() == 0 || iarr.size() == 0) {

+ 3 - 0
servers/rendering/rendering_server_default.cpp

@@ -45,6 +45,9 @@ int RenderingServerDefault::changes = 0;
 /* FREE */
 
 void RenderingServerDefault::_free(RID p_rid) {
+	if (unlikely(p_rid.is_null())) {
+		return;
+	}
 	if (RSG::storage->free(p_rid)) {
 		return;
 	}