diff options
author | Brecht Van Lommel <brechtvanlommel@pandora.be> | 2013-04-15 21:45:15 +0400 |
---|---|---|
committer | Brecht Van Lommel <brechtvanlommel@pandora.be> | 2013-04-15 21:45:15 +0400 |
commit | d260ccb92743f8fb500b0c5cd3033a88e8fa35a4 (patch) | |
tree | c5d690f548db3176a29f07a8f4fe906a9f355fb4 | |
parent | 24ef6f7add98f4c6f8a5f41fc2fb52d2be2c7287 (diff) |
Fix #34975: crash rendering curve/text with modifiers that alter topology,
was issue in new freestyle code.
-rw-r--r-- | source/blender/render/intern/source/convertblender.c | 14 |
1 files changed, 9 insertions, 5 deletions
diff --git a/source/blender/render/intern/source/convertblender.c b/source/blender/render/intern/source/convertblender.c index 72f21c42d9e..6b033a4eb3c 100644 --- a/source/blender/render/intern/source/convertblender.c +++ b/source/blender/render/intern/source/convertblender.c @@ -2662,7 +2662,7 @@ static void init_render_dm(DerivedMesh *dm, Render *re, ObjectRen *obr, #ifdef WITH_FREESTYLE const int *index_mf_to_mpoly = NULL; const int *index_mp_to_orig = NULL; - FreestyleFace *ffa; + FreestyleFace *ffa = NULL; #endif /* Curve *cu= ELEM(ob->type, OB_FONT, OB_CURVE) ? ob->data : NULL; */ @@ -2693,10 +2693,14 @@ static void init_render_dm(DerivedMesh *dm, Render *re, ObjectRen *obr, ma= give_render_material(re, ob, mat_iter+1); end= dm->getNumTessFaces(dm); mface= dm->getTessFaceArray(dm); + #ifdef WITH_FREESTYLE - index_mf_to_mpoly= dm->getTessFaceDataArray(dm, CD_ORIGINDEX); - index_mp_to_orig= dm->getPolyDataArray(dm, CD_ORIGINDEX); - ffa= CustomData_get_layer(&((Mesh *)ob->data)->pdata, CD_FREESTYLE_FACE); + if(ob->type == OB_MESH) { + Mesh *me= ob->data; + index_mf_to_mpoly= dm->getTessFaceDataArray(dm, CD_ORIGINDEX); + index_mp_to_orig= dm->getPolyDataArray(dm, CD_ORIGINDEX); + ffa= CustomData_get_layer(&me->pdata, CD_FREESTYLE_FACE); + } #endif for (a=0; a<end; a++, mface++) { @@ -3483,7 +3487,7 @@ static void init_render_mesh(Render *re, ObjectRen *obr, int timeoffset) #ifdef WITH_FREESTYLE index_mf_to_mpoly= dm->getTessFaceDataArray(dm, CD_ORIGINDEX); index_mp_to_orig= dm->getPolyDataArray(dm, CD_ORIGINDEX); - ffa= CustomData_get_layer(&((Mesh *)ob->data)->pdata, CD_FREESTYLE_FACE); + ffa= CustomData_get_layer(&me->pdata, CD_FREESTYLE_FACE); #endif for (a=0; a<end; a++, mface++) { |