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
diff options
context:
space:
mode:
authorTamito Kajiyama <rd6t-kjym@asahi-net.or.jp>2013-01-27 02:28:04 +0400
committerTamito Kajiyama <rd6t-kjym@asahi-net.or.jp>2013-01-27 02:28:04 +0400
commit9251d628db0abe599d927d79170025d8545c8ace (patch)
treed020cc3013ce6446390b568b644dcf9bc9187676 /source/blender/freestyle
parent7ae0c936fa070da0bf10782e77c4500bf9bd57a8 (diff)
Slightly generalized the crash fix in revision 54111.
Also added a warning message to anticipate potential issues due to the implication of the problem addressed here.
Diffstat (limited to 'source/blender/freestyle')
-rw-r--r--source/blender/freestyle/intern/view_map/FEdgeXDetector.cpp12
-rw-r--r--source/blender/freestyle/intern/winged_edge/Curvature.cpp6
2 files changed, 12 insertions, 6 deletions
diff --git a/source/blender/freestyle/intern/view_map/FEdgeXDetector.cpp b/source/blender/freestyle/intern/view_map/FEdgeXDetector.cpp
index 9631c93cd7e..2ded242e9ea 100644
--- a/source/blender/freestyle/intern/view_map/FEdgeXDetector.cpp
+++ b/source/blender/freestyle/intern/view_map/FEdgeXDetector.cpp
@@ -40,6 +40,8 @@
#include "../geometry/GeomUtils.h"
#include "../geometry/normal_cycle.h"
+#include "BKE_global.h"
+
void FEdgeXDetector::processShapes(WingedEdge& we)
{
bool progressBarDisplay = false;
@@ -171,6 +173,16 @@ void FEdgeXDetector::preProcessFace(WXFace *iFace)
void FEdgeXDetector::computeCurvatures(WXVertex *vertex)
{
+ // TODO: for some reason, the 'vertex' may have no associated edges
+ // (i.e., WVertex::_EdgeList is empty), which causes a crash due to
+ // a subsequent call of WVertex::_EdgeList.front().
+ if (vertex->GetEdges().empty()) {
+ if (G.debug & G_DEBUG_FREESTYLE) {
+ printf("Warning: WVertex %d has no associated edges.\n", vertex->GetId());
+ }
+ return;
+ }
+
// CURVATURE LAYER
// store all the curvature datas for each vertex
diff --git a/source/blender/freestyle/intern/winged_edge/Curvature.cpp b/source/blender/freestyle/intern/winged_edge/Curvature.cpp
index 65ebdeac3a8..64b897c5596 100644
--- a/source/blender/freestyle/intern/winged_edge/Curvature.cpp
+++ b/source/blender/freestyle/intern/winged_edge/Curvature.cpp
@@ -586,12 +586,6 @@ static bool sphere_clip_vector(const Vec3r& O, real r, const Vec3r& P, Vec3r& V)
// use marking ? (measure *timings* ...)
void compute_curvature_tensor(WVertex *start, real radius, NormalCycle& nc)
{
- // TODO: for some reason, the WVertex 'start' may have no associated edges
- // (i.e., WVertex::_EdgeList is empty), which causes a crash due to a call
- // of WVertex::_EdgeList.front().
- if (start->GetEdges().empty())
- return;
-
// in case we have a non-manifold vertex, skip it...
if (start->isBoundary())
return;