Welcome to mirror list, hosted at ThFree Co, Russian Federation.

git.blender.org/blender.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
Diffstat (limited to 'intern/opensubdiv/internal/topology/mesh_topology.cc')
-rw-r--r--intern/opensubdiv/internal/topology/mesh_topology.cc16
1 files changed, 12 insertions, 4 deletions
diff --git a/intern/opensubdiv/internal/topology/mesh_topology.cc b/intern/opensubdiv/internal/topology/mesh_topology.cc
index 3d8535ee2f1..9197a5c1b54 100644
--- a/intern/opensubdiv/internal/topology/mesh_topology.cc
+++ b/intern/opensubdiv/internal/topology/mesh_topology.cc
@@ -80,8 +80,6 @@ void MeshTopology::ensureVertexTagsSize(int num_vertices)
void MeshTopology::setNumEdges(int num_edges)
{
num_edges_ = num_edges;
-
- edges_.resize(num_edges_);
}
int MeshTopology::getNumEdges() const
@@ -112,6 +110,12 @@ void MeshTopology::getEdgeVertexIndices(int edge_index, int *v1, int *v2) const
assert(edge_index >= 0);
assert(edge_index < getNumEdges());
+ if (edge_index >= edges_.size()) {
+ *v1 = -1;
+ *v1 = -1;
+ return;
+ }
+
const Edge &edge = edges_[edge_index];
*v1 = edge.v1;
*v2 = edge.v2;
@@ -122,6 +126,10 @@ bool MeshTopology::isEdgeEqual(int edge_index, int expected_v1, int expected_v2)
assert(edge_index >= 0);
assert(edge_index < getNumEdges());
+ if (edge_index >= edges_.size()) {
+ return false;
+ }
+
const Edge &edge = edges_[edge_index];
return edge.v1 == expected_v1 && edge.v2 == expected_v2;
}
@@ -155,8 +163,8 @@ float MeshTopology::getEdgeSharpness(int edge_index) const
void MeshTopology::ensureNumEdgesAtLeast(int num_edges)
{
- if (getNumEdges() < num_edges) {
- setNumEdges(num_edges);
+ if (edges_.size() < num_edges) {
+ edges_.resize(num_edges);
}
}