diff options
author | Sergey Sharybin <sergey.vfx@gmail.com> | 2010-03-30 18:33:05 +0400 |
---|---|---|
committer | Sergey Sharybin <sergey.vfx@gmail.com> | 2010-03-30 18:33:05 +0400 |
commit | d0f8d9f38cfffaa5117930f7724bddf3d4c68d72 (patch) | |
tree | 211a487cc3fdb1da345b9b88be50df6c4d72caee /source/blender/blenkernel/intern/displist.c | |
parent | 1902de715f15454a5abf6c7972f156d5c6288f9d (diff) |
Fixed segmentation fault when non-curve object is setting as a taper
Deny user to select non-curve objects for taper and bevel lists, also
added some checking into displist and curve modules - object could be
converted from curve to mesh (would be better to unset bevel/taper
object in this case -- will try to implement a bit later).
Diffstat (limited to 'source/blender/blenkernel/intern/displist.c')
-rw-r--r-- | source/blender/blenkernel/intern/displist.c | 6 |
1 files changed, 4 insertions, 2 deletions
diff --git a/source/blender/blenkernel/intern/displist.c b/source/blender/blenkernel/intern/displist.c index 29ee8aeab45..4defa0e53a1 100644 --- a/source/blender/blenkernel/intern/displist.c +++ b/source/blender/blenkernel/intern/displist.c @@ -1755,8 +1755,10 @@ static void do_makeDispListCurveTypes(Scene *scene, Object *ob, ListBase *dispba bevp= (BevPoint *)(bl+1); for(a=0; a<bl->nr; a++,bevp++) { float fac=1.0; - if (cu->taperobj==NULL) { - if ( (cu->bevobj!=NULL) || !((cu->flag & CU_FRONT) || (cu->flag & CU_BACK)) ) + if (cu->taperobj==NULL || + cu->taperobj->type != OB_CURVE || cu->taperobj == ob) { + if ( (cu->bevobj!=NULL && cu->bevobj->type == OB_CURVE) || + !((cu->flag & CU_FRONT) || (cu->flag & CU_BACK)) ) fac = bevp->radius; } else { fac = calc_taper(scene, cu->taperobj, a, bl->nr); |