diff options
author | Campbell Barton <ideasman42@gmail.com> | 2013-02-06 06:48:03 +0400 |
---|---|---|
committer | Campbell Barton <ideasman42@gmail.com> | 2013-02-06 06:48:03 +0400 |
commit | 441c7fb79a83b7d6f9e86cd2a3b0c8eaeec6d07c (patch) | |
tree | c36037cb30d34107fde0d2441ac7c3e768a8c9bb /source/blender/editors/transform | |
parent | 6ff014a7fe2621da897c7511fe100ea5ff2af2a9 (diff) |
fix for crashes running some operators in background mode and some divide by zero errors.
Diffstat (limited to 'source/blender/editors/transform')
-rw-r--r-- | source/blender/editors/transform/transform.c | 30 |
1 files changed, 21 insertions, 9 deletions
diff --git a/source/blender/editors/transform/transform.c b/source/blender/editors/transform/transform.c index 787791814cc..98d4c5e7b81 100644 --- a/source/blender/editors/transform/transform.c +++ b/source/blender/editors/transform/transform.c @@ -6023,7 +6023,7 @@ static int createVertSlideVerts(TransInfo *t) if (t->spacetype == SPACE_VIEW3D) { /* background mode support */ // v3d = t->sa ? t->sa->spacedata.first : NULL; - rv3d = t->ar ? t->ar->regiondata : NULL; + rv3d = ar ? ar->regiondata : NULL; } sld->is_proportional = true; @@ -6089,18 +6089,30 @@ static int createVertSlideVerts(TransInfo *t) if (!BM_elem_flag_test(e, BM_ELEM_HIDDEN)) { BMVert *v_other = BM_edge_other_vert(e, v); copy_v3_v3(sv_array[j].co_link_orig_3d[k], v_other->co); - ED_view3d_project_float_v2_m4(ar, - sv_array[j].co_link_orig_3d[k], - sv_array[j].co_link_orig_2d[k], - projectMat); + if (ar) { + ED_view3d_project_float_v2_m4(ar, + sv_array[j].co_link_orig_3d[k], + sv_array[j].co_link_orig_2d[k], + projectMat); + } + else { + copy_v2_v2(sv_array[j].co_link_orig_2d[k], + sv_array[j].co_link_orig_3d[k]); + } k++; } } - ED_view3d_project_float_v2_m4(ar, - sv_array[j].co_orig_3d, - sv_array[j].co_orig_2d, - projectMat); + if (ar) { + ED_view3d_project_float_v2_m4(ar, + sv_array[j].co_orig_3d, + sv_array[j].co_orig_2d, + projectMat); + } + else { + copy_v2_v2(sv_array[j].co_orig_2d, + sv_array[j].co_orig_3d); + } j++; } |