diff options
author | Campbell Barton <ideasman42@gmail.com> | 2012-03-15 04:57:14 +0400 |
---|---|---|
committer | Campbell Barton <ideasman42@gmail.com> | 2012-03-15 04:57:14 +0400 |
commit | be7477c638977227340a5baf6367ff7c493f435b (patch) | |
tree | 6e832a40127388db6170529c91075f028d3e963d | |
parent | 5788de8408b0433443be81377f92498957d96908 (diff) |
fix [#30542] Shear Vertical Seg Faults Blender
honor the T_FREE_CUSTOMDATA flag.
-rw-r--r-- | source/blender/editors/transform/transform.c | 2 | ||||
-rw-r--r-- | source/blender/editors/transform/transform_conversions.c | 7 | ||||
-rw-r--r-- | source/blender/editors/transform/transform_generics.c | 2 |
3 files changed, 6 insertions, 5 deletions
diff --git a/source/blender/editors/transform/transform.c b/source/blender/editors/transform/transform.c index 4334d323737..c62bac7d5c7 100644 --- a/source/blender/editors/transform/transform.c +++ b/source/blender/editors/transform/transform.c @@ -2454,7 +2454,7 @@ int handleEventShear(TransInfo *t, wmEvent *event) initMouseInputMode(t, &t->mouse, INPUT_HORIZONTAL_ABSOLUTE); t->customData = NULL; } - + status = 1; } diff --git a/source/blender/editors/transform/transform_conversions.c b/source/blender/editors/transform/transform_conversions.c index faffa289c2a..595edf053b8 100644 --- a/source/blender/editors/transform/transform_conversions.c +++ b/source/blender/editors/transform/transform_conversions.c @@ -4204,9 +4204,9 @@ static void freeSeqData(TransInfo *t) } } - if (t->customData) { + if ((t->customData != NULL) && (t->flag & T_FREE_CUSTOMDATA)) { MEM_freeN(t->customData); - t->customData= NULL; + t->customData = NULL; } if (t->data) { MEM_freeN(t->data); // XXX postTrans usually does this @@ -4281,7 +4281,8 @@ static void createTransSeqData(bContext *C, TransInfo *t) td = t->data = MEM_callocN(t->total*sizeof(TransData), "TransSeq TransData"); td2d = t->data2d = MEM_callocN(t->total*sizeof(TransData2D), "TransSeq TransData2D"); - tdsq = t->customData= MEM_callocN(t->total*sizeof(TransDataSeq), "TransSeq TransDataSeq"); + tdsq = t->customData = MEM_callocN(t->total*sizeof(TransDataSeq), "TransSeq TransDataSeq"); + t->flag |= T_FREE_CUSTOMDATA; diff --git a/source/blender/editors/transform/transform_generics.c b/source/blender/editors/transform/transform_generics.c index 509d7bdd0e7..fa0c0883f01 100644 --- a/source/blender/editors/transform/transform_generics.c +++ b/source/blender/editors/transform/transform_generics.c @@ -1245,7 +1245,7 @@ void postTrans (bContext *C, TransInfo *t) /* Can take over freeing t->data and data2d etc... */ t->customFree(t); } - else if (t->customData) { + else if ((t->customData != NULL) && (t->flag & T_FREE_CUSTOMDATA)) { MEM_freeN(t->customData); } |