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:
authorMai Lavelle <mai.lavelle@gmail.com>2016-09-23 00:34:14 +0300
committerMai Lavelle <mai.lavelle@gmail.com>2016-09-23 00:44:22 +0300
commit1b2b7cfa2007172e07d78324bb941d0160b59c42 (patch)
tree3d2b69a21cce354080febcb4853252a694bb610c /intern/cycles/render
parent56498757ce971af60d27e619ca84249675413f17 (diff)
Cycles: Fix overflow caused by wrong size calculation in Mesh::add_undisplaced
Diffstat (limited to 'intern/cycles/render')
-rw-r--r--intern/cycles/render/mesh.cpp6
1 files changed, 6 insertions, 0 deletions
diff --git a/intern/cycles/render/mesh.cpp b/intern/cycles/render/mesh.cpp
index 2d297c33446..3eff35bae9e 100644
--- a/intern/cycles/render/mesh.cpp
+++ b/intern/cycles/render/mesh.cpp
@@ -601,6 +601,12 @@ void Mesh::add_undisplaced()
/* copy verts */
size_t size = attr->buffer_size(this, (subdivision_type == SUBDIVISION_NONE) ? ATTR_PRIM_TRIANGLE : ATTR_PRIM_SUBD);
+
+ /* Center points for ngons aren't stored in Mesh::verts but are included in size since they will be
+ * calculated later, we subtract them from size here so we don't have an overflow while copying.
+ */
+ size -= num_ngons * attr->data_sizeof();
+
if(size) {
memcpy(data, verts.data(), size);
}