Merge branch 'master' into blender2.8
[blender.git] / source / blender / modifiers / intern / MOD_surfacedeform.c
index 4f5814b7ad83ce646e8a11d95aedb8afff502bb9..bf6a0bdd23459dea6d748ed12705a4a3c33be2b8 100644 (file)
@@ -1103,6 +1103,11 @@ static void surfacedeformModifier_do(ModifierData *md, float (*vertexCos)[3], un
                tdm = smd->target->derivedFinal;
        }
 
                tdm = smd->target->derivedFinal;
        }
 
+       if (!tdm) {
+               modifier_setError(md, "No valid target mesh");
+               return;
+       }
+
        tnumverts = tdm->getNumVerts(tdm);
        tnumpoly = tdm->getNumPolys(tdm);
 
        tnumverts = tdm->getNumVerts(tdm);
        tnumpoly = tdm->getNumPolys(tdm);
 
@@ -1122,12 +1127,10 @@ static void surfacedeformModifier_do(ModifierData *md, float (*vertexCos)[3], un
        /* Poly count checks */
        if (smd->numverts != numverts) {
                modifier_setError(md, "Verts changed from %u to %u", smd->numverts, numverts);
        /* Poly count checks */
        if (smd->numverts != numverts) {
                modifier_setError(md, "Verts changed from %u to %u", smd->numverts, numverts);
-               tdm->release(tdm);
                return;
        }
        else if (smd->numpoly != tnumpoly) {
                modifier_setError(md, "Target polygons changed from %u to %u", smd->numpoly, tnumpoly);
                return;
        }
        else if (smd->numpoly != tnumpoly) {
                modifier_setError(md, "Target polygons changed from %u to %u", smd->numpoly, tnumpoly);
-               tdm->release(tdm);
                return;
        }
 
                return;
        }
 
@@ -1153,8 +1156,6 @@ static void surfacedeformModifier_do(ModifierData *md, float (*vertexCos)[3], un
 
                MEM_freeN(data.targetCos);
        }
 
                MEM_freeN(data.targetCos);
        }
-
-       tdm->release(tdm);
 }
 
 static void deformVerts(ModifierData *md, Object *ob,
 }
 
 static void deformVerts(ModifierData *md, Object *ob,