From 8e772366b1ffce1d607a99d8841e02a72d03b208 Mon Sep 17 00:00:00 2001 From: tobspr Date: Wed, 9 Dec 2015 20:46:19 +0100 Subject: [PATCH] Fix unitialized memory in nurbsVertex, prevent division by zero in NurbsCurveEvaluator --- panda/src/parametrics/nurbsCurveEvaluator.cxx | 9 +++++++-- panda/src/parametrics/nurbsVertex.I | 1 + 2 files changed, 8 insertions(+), 2 deletions(-) diff --git a/panda/src/parametrics/nurbsCurveEvaluator.cxx b/panda/src/parametrics/nurbsCurveEvaluator.cxx index 4e4cb4d3a0..62af13e595 100644 --- a/panda/src/parametrics/nurbsCurveEvaluator.cxx +++ b/panda/src/parametrics/nurbsCurveEvaluator.cxx @@ -244,8 +244,13 @@ get_vertices(NurbsCurveEvaluator::Vert3Array &verts, const NodePath &rel_to) con int vi; for (vi = 0; vi < num_vertices; vi++) { LVecBase4 vertex = get_vertex(vi, rel_to); - LPoint3 v3(vertex[0] / vertex[3], vertex[1] / vertex[3], vertex[2] / vertex[3]); - verts.push_back(v3); + // Avoid division by zero + if (vertex[3] == 0.0) { + verts.push_back(LPoint3(vertex[0], vertex[1], vertex[2])); + } else { + LPoint3 v3(vertex[0] / vertex[3], vertex[1] / vertex[3], vertex[2] / vertex[3]); + verts.push_back(v3); + } } } diff --git a/panda/src/parametrics/nurbsVertex.I b/panda/src/parametrics/nurbsVertex.I index 8370cf20f3..a054d7623a 100644 --- a/panda/src/parametrics/nurbsVertex.I +++ b/panda/src/parametrics/nurbsVertex.I @@ -20,6 +20,7 @@ //////////////////////////////////////////////////////////////////// INLINE NurbsVertex:: NurbsVertex() { + _vertex.set(0, 0, 0, 1); } ////////////////////////////////////////////////////////////////////