[Bf-blender-cvs] [2089a17f7e] master: Fix T50838: Surface Deform DM use after free issue

Luca Rood noreply at git.blender.org
Sat Mar 4 07:22:19 CET 2017


Commit: 2089a17f7e69bb2106950b041486e23928065fb0
Author: Luca Rood
Date:   Sat Mar 4 03:16:50 2017 -0300
Branches: master
https://developer.blender.org/rB2089a17f7e69bb2106950b041486e23928065fb0

Fix T50838: Surface Deform DM use after free issue

Implementd fix suggested by @sergey in T50838.

===================================================================

M	source/blender/modifiers/intern/MOD_surfacedeform.c

===================================================================

diff --git a/source/blender/modifiers/intern/MOD_surfacedeform.c b/source/blender/modifiers/intern/MOD_surfacedeform.c
index 5e852e8451..3beb69f079 100644
--- a/source/blender/modifiers/intern/MOD_surfacedeform.c
+++ b/source/blender/modifiers/intern/MOD_surfacedeform.c
@@ -1088,6 +1088,7 @@ static void surfacedeformModifier_do(ModifierData *md, float (*vertexCos)[3], un
 	SurfaceDeformModifierData *smd = (SurfaceDeformModifierData *)md;
 	DerivedMesh *tdm;
 	unsigned int tnumpoly;
+	bool tdm_vert_alloc;
 
 	/* Exit function if bind flag is not set (free bind data if any) */
 	if (!(smd->flags & MOD_SDEF_BIND)) {
@@ -1128,12 +1129,16 @@ static void surfacedeformModifier_do(ModifierData *md, float (*vertexCos)[3], un
 
 	/* Actual vertex location update starts here */
 	SDefDeformData data = {.bind_verts = smd->verts,
-		                   .mvert = tdm->getVertArray(tdm),
+		                   .mvert = DM_get_vert_array(tdm, &tdm_vert_alloc),
 		                   .vertexCos = vertexCos};
 
 	BLI_task_parallel_range_ex(0, numverts, &data, NULL, 0, deformVert,
 	                           numverts > 10000, false);
 
+	if (tdm_vert_alloc) {
+		MEM_freeN((void *)data.mvert);
+	}
+
 	tdm->release(tdm);
 }




More information about the Bf-blender-cvs mailing list