diff options
author | Haoyu Qiu <timothyqiu32@gmail.com> | 2022-01-10 17:19:47 +0800 |
---|---|---|
committer | Haoyu Qiu <timothyqiu32@gmail.com> | 2022-01-10 18:24:31 +0800 |
commit | af67e4c2919cb12ec257ca6bc3bb264933e4e2a4 (patch) | |
tree | 20e7925170db8d00203916857794d06aab0adc26 | |
parent | d7464757084099765dee5755b21a8847f4226360 (diff) |
Fix crash on importing FBX file
-rw-r--r-- | core/templates/set.h | 3 | ||||
-rw-r--r-- | modules/fbx/data/fbx_mesh_data.cpp | 4 |
2 files changed, 5 insertions, 2 deletions
diff --git a/core/templates/set.h b/core/templates/set.h index 9107459884..cdc6e8447d 100644 --- a/core/templates/set.h +++ b/core/templates/set.h @@ -582,6 +582,9 @@ public: } Element *lower_bound(const T &p_value) const { + if (!_data._root) { + return nullptr; + } return _lower_bound(p_value); } diff --git a/modules/fbx/data/fbx_mesh_data.cpp b/modules/fbx/data/fbx_mesh_data.cpp index 2b29f4d97e..643a74f83e 100644 --- a/modules/fbx/data/fbx_mesh_data.cpp +++ b/modules/fbx/data/fbx_mesh_data.cpp @@ -1092,7 +1092,7 @@ HashMap<int, R> FBXMeshData::extract_per_vertex_data( const int vertex_index = get_vertex_from_polygon_vertex(p_mesh_indices, polygon_vertex_index); ERR_FAIL_COND_V_MSG(vertex_index < 0, (HashMap<int, R>()), "FBX file corrupted: #ERR05"); ERR_FAIL_COND_V_MSG(vertex_index >= p_vertex_count, (HashMap<int, R>()), "FBX file corrupted: #ERR06"); - const int index_to_direct = p_mapping_data.index[polygon_vertex_index]; + const int index_to_direct = get_vertex_from_polygon_vertex(p_mapping_data.index, polygon_vertex_index); T value = p_mapping_data.data[index_to_direct]; aggregate_vertex_data[vertex_index].push_back({ polygon_id, value }); } @@ -1297,7 +1297,7 @@ HashMap<int, T> FBXMeshData::extract_per_polygon( } else { ERR_FAIL_INDEX_V_MSG(polygon_index, (int)p_fbx_data.index.size(), (HashMap<int, T>()), "FBX file is corrupted: #ERR62"); - const int index_to_direct = p_fbx_data.index[polygon_index]; + const int index_to_direct = get_vertex_from_polygon_vertex(p_fbx_data.index, polygon_index); T value = p_fbx_data.data[index_to_direct]; aggregate_polygon_data[polygon_index].push_back(value); } |