Welcome to mirror list, hosted at ThFree Co, Russian Federation.

git.blender.org/blender.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
path: root/source
diff options
context:
space:
mode:
authorCampbell Barton <ideasman42@gmail.com>2014-04-08 01:28:14 +0400
committerCampbell Barton <ideasman42@gmail.com>2014-04-08 01:41:38 +0400
commitc61eb64f066bd101731ff389fd3534f73509106e (patch)
tree1f8b202743166affc1bbd570cfaac2b39a8b583b /source
parent3ab0a4da73f4fe29b67553e5f86c306d8e42b9b0 (diff)
Fix T39635: Crash convening curve to mesh
Diffstat (limited to 'source')
-rw-r--r--source/blender/blenkernel/BKE_curve.h1
-rw-r--r--source/blender/blenkernel/intern/curve.c10
-rw-r--r--source/blender/blenkernel/intern/displist.c2
3 files changed, 12 insertions, 1 deletions
diff --git a/source/blender/blenkernel/BKE_curve.h b/source/blender/blenkernel/BKE_curve.h
index c4dfd9d4e30..0f9f8cb2f08 100644
--- a/source/blender/blenkernel/BKE_curve.h
+++ b/source/blender/blenkernel/BKE_curve.h
@@ -149,6 +149,7 @@ void BKE_nurb_knot_calc_v(struct Nurb *nu);
/* nurb checks if they can be drawn, also clamp order func */
bool BKE_nurb_check_valid_u(struct Nurb *nu);
bool BKE_nurb_check_valid_v(struct Nurb *nu);
+bool BKE_nurb_check_valid_uv(struct Nurb *nu);
bool BKE_nurb_order_clamp_u(struct Nurb *nu);
bool BKE_nurb_order_clamp_v(struct Nurb *nu);
diff --git a/source/blender/blenkernel/intern/curve.c b/source/blender/blenkernel/intern/curve.c
index ae45ca55c5d..4ad844d8a1e 100644
--- a/source/blender/blenkernel/intern/curve.c
+++ b/source/blender/blenkernel/intern/curve.c
@@ -3801,6 +3801,16 @@ bool BKE_nurb_check_valid_v(struct Nurb *nu)
return true;
}
+bool BKE_nurb_check_valid_uv(struct Nurb *nu)
+{
+ if (!BKE_nurb_check_valid_u(nu))
+ return false;
+ if ((nu->pntsv > 1) && !BKE_nurb_check_valid_v(nu))
+ return false;
+
+ return true;
+}
+
bool BKE_nurb_order_clamp_u(struct Nurb *nu)
{
bool changed = false;
diff --git a/source/blender/blenkernel/intern/displist.c b/source/blender/blenkernel/intern/displist.c
index cdff6e249a7..eeb4f0d7fc4 100644
--- a/source/blender/blenkernel/intern/displist.c
+++ b/source/blender/blenkernel/intern/displist.c
@@ -1216,7 +1216,7 @@ void BKE_displist_make_surf(Scene *scene, Object *ob, ListBase *dispbase,
curve_calc_modifiers_pre(scene, ob, &nubase, for_render, use_render_resolution);
for (nu = nubase.first; nu; nu = nu->next) {
- if (for_render || nu->hide == 0) {
+ if ((for_render || nu->hide == 0) && BKE_nurb_check_valid_uv(nu)) {
int resolu = nu->resolu, resolv = nu->resolv;
if (use_render_resolution) {