diff options
author | Tamito Kajiyama <rd6t-kjym@asahi-net.or.jp> | 2013-04-09 04:46:49 +0400 |
---|---|---|
committer | Tamito Kajiyama <rd6t-kjym@asahi-net.or.jp> | 2013-04-09 04:46:49 +0400 |
commit | 800f86c8454ced85c29d1dcb04dcb163689a89d3 (patch) | |
tree | 4598a2ea78a1d1cf6a4c0a9e7030de4c826a006d /source/blender/freestyle/intern/geometry/FitCurve.cpp | |
parent | e6bd510dde6289efcead80e3d21cb21876282a56 (diff) |
Attempt to fix a potential name conflict between Freestyle and the compositor.
A crash in the Freestyle renderer was reported by Ton on IRC with a stack trace
below. Note that #2 is in Freestyle, whereas #1 is in the compositor. The problem
was observed in a debug build on OS X 10.7 (gcc 4.2, openmp disabled, no llvm).
----------------------------------------------------------------------
Program received signal EXC_BAD_ACCESS, Could not access memory.
Reason: 13 at address: 0x0000000000000000
[Switching to process 72386 thread 0xf303]
0x0000000100c129f3 in NodeBase::~NodeBase (this=0x10e501c80) at COM_NodeBase.cpp:43
43 delete (this->m_outputsockets.back());
Current language: auto; currently c++
(gdb) where
#0 0x0000000100c129f3 in NodeBase::~NodeBase (this=0x10e501c80) at COM_NodeBase.cpp:43
#1 0x0000000100c29066 in Node::~Node (this=0x10e501c80) at COM_Node.h:49
#2 0x000000010089c273 in NodeShape::~NodeShape (this=0x10e501c80) at NodeShape.cpp:43
#3 0x000000010089910b in NodeGroup::destroy (this=0x10e501da0) at NodeGroup.cpp:61
#4 0x00000001008990cd in NodeGroup::destroy (this=0x10e5014b0) at NodeGroup.cpp:59
#5 0x00000001008990cd in NodeGroup::destroy (this=0x114e18da0) at NodeGroup.cpp:59
#6 0x00000001007e6602 in Controller::ClearRootNode (this=0x114e19640) at Controller.cpp:329
#7 0x00000001007ea52e in Controller::LoadMesh (this=0x114e19640, re=0x10aba4638, srl=0x1140f5258) at Controller.cpp:302
#8 0x00000001008030ad in prepare (re=0x10aba4638, srl=0x1140f5258) at FRS_freestyle.cpp:302
#9 0x000000010080457a in FRS_do_stroke_rendering (re=0x10aba4638, srl=0x1140f5258) at FRS_freestyle.cpp:600
#10 0x00000001006aeb9d in add_freestyle (re=0x10aba4638) at pipeline.c:1584
#11 0x00000001006aceb7 in do_render_3d (re=0x10aba4638) at pipeline.c:1094
#12 0x00000001006ae061 in do_render_fields_blur_3d (re=0x10aba4638) at pipeline.c:1367
#13 0x00000001006afa16 in do_render_composite_fields_blur_3d (re=0x10aba4638) at pipeline.c:1815
#14 0x00000001006b04e4 in do_render_all_options (re=0x10aba4638) at pipeline.c:2021
----------------------------------------------------------------------
Apparently a name conflict between the two Blender modules is taking place.
The present commit hence intends to address it by putting all the Freestyle C++
classes in the namespace 'Freestyle'. This revision will also prevent potential
name conflicts with other Blender modules in the future.
Special thanks to Lukas Toenne for the help with C++ namespace.
Diffstat (limited to 'source/blender/freestyle/intern/geometry/FitCurve.cpp')
-rw-r--r-- | source/blender/freestyle/intern/geometry/FitCurve.cpp | 19 |
1 files changed, 4 insertions, 15 deletions
diff --git a/source/blender/freestyle/intern/geometry/FitCurve.cpp b/source/blender/freestyle/intern/geometry/FitCurve.cpp index d2e74597b2d..0e5d839f361 100644 --- a/source/blender/freestyle/intern/geometry/FitCurve.cpp +++ b/source/blender/freestyle/intern/geometry/FitCurve.cpp @@ -34,13 +34,9 @@ using namespace std; -typedef Vector2 *BezierCurve; +namespace Freestyle { -// XXX Do we need "#ifdef __cplusplus" at all here??? -#ifdef __cplusplus -extern "C" -{ -#endif +typedef Vector2 *BezierCurve; /* Forward declarations */ static double *Reparameterize(Vector2 *d, int first, int last, double *u, BezierCurve bezCurve); @@ -332,7 +328,6 @@ static double B0(double u) return (tmp * tmp * tmp); } - static double B1(double u) { double tmp = 1.0 - u; @@ -416,9 +411,6 @@ static double *ChordLengthParameterize(Vector2 *d, int first, int last) return u; } - - - /* * ComputeMaxError : * Find the maximum squared distance of digitized points to fitted curve. @@ -474,11 +466,6 @@ static Vector2 V2SubII(Vector2 a, Vector2 b) return c; } -#ifdef __cplusplus -} -#endif - - //------------------------- WRAPPER -----------------------------// FitCurveWrapper::FitCurveWrapper() @@ -591,3 +578,5 @@ void FitCurveWrapper::FitCubic(Vector2 *d, int first, int last, Vector2 tHat1, V V2Negate(&tHatCenter); FitCubic(d, splitPoint, last, tHatCenter, tHat2, error); } + +} /* namespace Freestyle */ |