Made all the assert() lines which check the valuenode sub-parameter index range the...
authordooglus <dooglus@1f10aa63-cdf2-0310-b900-c93c546f37ac>
Thu, 10 Jan 2008 13:43:43 +0000 (13:43 +0000)
committerdooglus <dooglus@1f10aa63-cdf2-0310-b900-c93c546f37ac>
Thu, 10 Jan 2008 13:43:43 +0000 (13:43 +0000)
git-svn-id: http://svn.voria.com/code@1302 1f10aa63-cdf2-0310-b900-c93c546f37ac

24 files changed:
synfig-core/trunk/src/synfig/valuenode_atan2.cpp
synfig-core/trunk/src/synfig/valuenode_composite.cpp
synfig-core/trunk/src/synfig/valuenode_cos.cpp
synfig-core/trunk/src/synfig/valuenode_duplicate.cpp
synfig-core/trunk/src/synfig/valuenode_dynamiclist.cpp
synfig-core/trunk/src/synfig/valuenode_exp.cpp
synfig-core/trunk/src/synfig/valuenode_gradientrotate.cpp
synfig-core/trunk/src/synfig/valuenode_integer.cpp
synfig-core/trunk/src/synfig/valuenode_linear.cpp
synfig-core/trunk/src/synfig/valuenode_radialcomposite.cpp
synfig-core/trunk/src/synfig/valuenode_range.cpp
synfig-core/trunk/src/synfig/valuenode_reciprocal.cpp
synfig-core/trunk/src/synfig/valuenode_reference.cpp
synfig-core/trunk/src/synfig/valuenode_repeat_gradient.cpp
synfig-core/trunk/src/synfig/valuenode_scale.cpp
synfig-core/trunk/src/synfig/valuenode_segcalctangent.cpp
synfig-core/trunk/src/synfig/valuenode_segcalcvertex.cpp
synfig-core/trunk/src/synfig/valuenode_sine.cpp
synfig-core/trunk/src/synfig/valuenode_stripes.cpp
synfig-core/trunk/src/synfig/valuenode_subtract.cpp
synfig-core/trunk/src/synfig/valuenode_switch.cpp
synfig-core/trunk/src/synfig/valuenode_timedswap.cpp
synfig-core/trunk/src/synfig/valuenode_timeloop.cpp
synfig-core/trunk/src/synfig/valuenode_twotone.cpp

index b4d2b56..4425539 100644 (file)
@@ -112,7 +112,8 @@ ValueNode_Atan2::check_type(ValueBase::Type type)
 bool
 ValueNode_Atan2::set_link_vfunc(int i,ValueNode::Handle x)
 {
 bool
 ValueNode_Atan2::set_link_vfunc(int i,ValueNode::Handle x)
 {
-       assert(i==0 || i==1);
+       assert(i>=0 && i<link_count());
+
        if(i==0)
        {
                x_=x;
        if(i==0)
        {
                x_=x;
@@ -131,7 +132,8 @@ ValueNode_Atan2::set_link_vfunc(int i,ValueNode::Handle x)
 ValueNode::LooseHandle
 ValueNode_Atan2::get_link_vfunc(int i)const
 {
 ValueNode::LooseHandle
 ValueNode_Atan2::get_link_vfunc(int i)const
 {
-       assert(i==0 || i==1);
+       assert(i>=0 && i<link_count());
+
        if(i==0)
                return x_;
        if(i==1)
        if(i==0)
                return x_;
        if(i==1)
@@ -149,7 +151,8 @@ ValueNode_Atan2::link_count()const
 String
 ValueNode_Atan2::link_name(int i)const
 {
 String
 ValueNode_Atan2::link_name(int i)const
 {
-       assert(i==0 || i==1);
+       assert(i>=0 && i<link_count());
+
        if(i==0)
                return "x";
        if(i==1)
        if(i==0)
                return "x";
        if(i==1)
@@ -160,7 +163,8 @@ ValueNode_Atan2::link_name(int i)const
 String
 ValueNode_Atan2::link_local_name(int i)const
 {
 String
 ValueNode_Atan2::link_local_name(int i)const
 {
-       assert(i==0 || i==1);
+       assert(i>=0 && i<link_count());
+
        if(i==0)
                return _("X");
        if(i==1)
        if(i==0)
                return _("X");
        if(i==1)
index b1921db..0acc79c 100644 (file)
@@ -184,8 +184,7 @@ ValueNode_Composite::link_count()const
 bool
 ValueNode_Composite::set_link_vfunc(int i,ValueNode::Handle x)
 {
 bool
 ValueNode_Composite::set_link_vfunc(int i,ValueNode::Handle x)
 {
-       assert(i>=0);
-       assert(i<6);
+       assert(i>=0 && i<link_count());
 
        if(PlaceholderValueNode::Handle::cast_dynamic(x))
        {
 
        if(PlaceholderValueNode::Handle::cast_dynamic(x))
        {
@@ -196,7 +195,6 @@ ValueNode_Composite::set_link_vfunc(int i,ValueNode::Handle x)
        switch(get_type())
        {
                case ValueBase::TYPE_VECTOR:
        switch(get_type())
        {
                case ValueBase::TYPE_VECTOR:
-                       assert(i<2);
                        if(x->get_type()==ValueBase(Real()).get_type() || PlaceholderValueNode::Handle::cast_dynamic(x))
                        {
                                components[i]=x;
                        if(x->get_type()==ValueBase(Real()).get_type() || PlaceholderValueNode::Handle::cast_dynamic(x))
                        {
                                components[i]=x;
@@ -205,7 +203,6 @@ ValueNode_Composite::set_link_vfunc(int i,ValueNode::Handle x)
                        break;
 
                case ValueBase::TYPE_COLOR:
                        break;
 
                case ValueBase::TYPE_COLOR:
-                       assert(i<4);
                        if(x->get_type()==ValueBase(Real()).get_type() || PlaceholderValueNode::Handle::cast_dynamic(x))
                        {
                                components[i]=x;
                        if(x->get_type()==ValueBase(Real()).get_type() || PlaceholderValueNode::Handle::cast_dynamic(x))
                        {
                                components[i]=x;
@@ -214,7 +211,6 @@ ValueNode_Composite::set_link_vfunc(int i,ValueNode::Handle x)
                        break;
 
                case ValueBase::TYPE_SEGMENT:
                        break;
 
                case ValueBase::TYPE_SEGMENT:
-                       assert(i<4);
                        if(x->get_type()==ValueBase(Point()).get_type() || PlaceholderValueNode::Handle::cast_dynamic(x))
                        {
                                components[i]=x;
                        if(x->get_type()==ValueBase(Point()).get_type() || PlaceholderValueNode::Handle::cast_dynamic(x))
                        {
                                components[i]=x;
@@ -223,7 +219,6 @@ ValueNode_Composite::set_link_vfunc(int i,ValueNode::Handle x)
                        break;
 
                case ValueBase::TYPE_BLINEPOINT:
                        break;
 
                case ValueBase::TYPE_BLINEPOINT:
-                       assert(i<6);
                        if((i==0 || i==4 || i==5) && x->get_type()==ValueBase(Point()).get_type())
                        {
                                components[i]=x;
                        if((i==0 || i==4 || i==5) && x->get_type()==ValueBase(Point()).get_type())
                        {
                                components[i]=x;
@@ -250,14 +245,16 @@ ValueNode_Composite::set_link_vfunc(int i,ValueNode::Handle x)
 ValueNode::LooseHandle
 ValueNode_Composite::get_link_vfunc(int i)const
 {
 ValueNode::LooseHandle
 ValueNode_Composite::get_link_vfunc(int i)const
 {
-       assert(i>=0 && i<6);
+       assert(i>=0 && i<link_count());
+
        return components[i];
 }
 
 String
 ValueNode_Composite::link_local_name(int i)const
 {
        return components[i];
 }
 
 String
 ValueNode_Composite::link_local_name(int i)const
 {
-       assert(i>=0 && i<6);
+       assert(i>=0 && i<link_count());
+
        switch(get_type())
        {
                case ValueBase::TYPE_VECTOR:
        switch(get_type())
        {
                case ValueBase::TYPE_VECTOR:
@@ -306,7 +303,9 @@ ValueNode_Composite::link_local_name(int i)const
 String
 ValueNode_Composite::link_name(int i)const
 {
 String
 ValueNode_Composite::link_name(int i)const
 {
-       assert(i>=0 && i<5);
+       assert(i>=0 && i<link_count());
+
+       printf("!!! link_name(%d)\n", i);
        return strprintf("c%d",i);
 }
 
        return strprintf("c%d",i);
 }
 
index e7e1030..6b08859 100644 (file)
@@ -115,7 +115,8 @@ ValueNode_Cos::check_type(ValueBase::Type type)
 bool
 ValueNode_Cos::set_link_vfunc(int i,ValueNode::Handle x)
 {
 bool
 ValueNode_Cos::set_link_vfunc(int i,ValueNode::Handle x)
 {
-       assert(i==0 || i==1);
+       assert(i>=0 && i<link_count());
+
        if(i==0)
        {
                angle_=x;
        if(i==0)
        {
                angle_=x;
@@ -134,7 +135,8 @@ ValueNode_Cos::set_link_vfunc(int i,ValueNode::Handle x)
 ValueNode::LooseHandle
 ValueNode_Cos::get_link_vfunc(int i)const
 {
 ValueNode::LooseHandle
 ValueNode_Cos::get_link_vfunc(int i)const
 {
-       assert(i==0 || i==1);
+       assert(i>=0 && i<link_count());
+
        if(i==0)
                return angle_;
        if(i==1)
        if(i==0)
                return angle_;
        if(i==1)
@@ -152,7 +154,8 @@ ValueNode_Cos::link_count()const
 String
 ValueNode_Cos::link_name(int i)const
 {
 String
 ValueNode_Cos::link_name(int i)const
 {
-       assert(i==0 || i==1);
+       assert(i>=0 && i<link_count());
+
        if(i==0)
                return "angle";
        if(i==1)
        if(i==0)
                return "angle";
        if(i==1)
@@ -163,7 +166,8 @@ ValueNode_Cos::link_name(int i)const
 String
 ValueNode_Cos::link_local_name(int i)const
 {
 String
 ValueNode_Cos::link_local_name(int i)const
 {
-       assert(i==0 || i==1);
+       assert(i>=0 && i<link_count());
+
        if(i==0)
                return _("Angle");
        if(i==1)
        if(i==0)
                return _("Angle");
        if(i==1)
index 2b67c3e..7a9cc3c 100644 (file)
@@ -84,7 +84,8 @@ ValueNode_Duplicate::~ValueNode_Duplicate()
 bool
 ValueNode_Duplicate::set_link_vfunc(int i,ValueNode::Handle x)
 {
 bool
 ValueNode_Duplicate::set_link_vfunc(int i,ValueNode::Handle x)
 {
-       assert(i >= 0 && i < link_count());
+       assert(i>=0 && i<link_count());
+
        switch(i)
        {
        case 0:  from_ = x; break;
        switch(i)
        {
        case 0:  from_ = x; break;
@@ -101,7 +102,8 @@ ValueNode_Duplicate::set_link_vfunc(int i,ValueNode::Handle x)
 ValueNode::LooseHandle
 ValueNode_Duplicate::get_link_vfunc(int i)const
 {
 ValueNode::LooseHandle
 ValueNode_Duplicate::get_link_vfunc(int i)const
 {
-       assert(i >= 0 && i < link_count());
+       assert(i>=0 && i<link_count());
+
        if(i==0) return from_;
        if(i==1) return to_;
        if(i==2) return step_;
        if(i==0) return from_;
        if(i==1) return to_;
        if(i==2) return step_;
@@ -118,7 +120,8 @@ ValueNode_Duplicate::link_count()const
 String
 ValueNode_Duplicate::link_local_name(int i)const
 {
 String
 ValueNode_Duplicate::link_local_name(int i)const
 {
-       assert(i >= 0 && i < link_count());
+       assert(i>=0 && i<link_count());
+
        if(i==0) return _("From");
        if(i==1) return _("To");
        if(i==2) return _("Step");
        if(i==0) return _("From");
        if(i==1) return _("To");
        if(i==2) return _("Step");
@@ -128,7 +131,8 @@ ValueNode_Duplicate::link_local_name(int i)const
 String
 ValueNode_Duplicate::link_name(int i)const
 {
 String
 ValueNode_Duplicate::link_name(int i)const
 {
-       assert(i >= 0 && i < link_count());
+       assert(i>=0 && i<link_count());
+
        if(i==0) return "from";
        if(i==1) return "to";
        if(i==2) return "step";
        if(i==0) return "from";
        if(i==1) return "to";
        if(i==2) return "step";
index 7e8f378..a0d3f79 100644 (file)
@@ -621,6 +621,7 @@ bool
 ValueNode_DynamicList::set_link_vfunc(int i,ValueNode::Handle x)
 {
        assert(i>=0);
 ValueNode_DynamicList::set_link_vfunc(int i,ValueNode::Handle x)
 {
        assert(i>=0);
+
        if((unsigned)i>=list.size())
                return false;
        if(x->get_type()!=container_type)
        if((unsigned)i>=list.size())
                return false;
        if(x->get_type()!=container_type)
@@ -633,6 +634,7 @@ ValueNode::LooseHandle
 ValueNode_DynamicList::get_link_vfunc(int i)const
 {
        assert(i>=0);
 ValueNode_DynamicList::get_link_vfunc(int i)const
 {
        assert(i>=0);
+
        if((unsigned)i>=list.size())
                return 0;
        return list[i].value_node;
        if((unsigned)i>=list.size())
                return 0;
        return list[i].value_node;
@@ -647,7 +649,8 @@ ValueNode_DynamicList::link_count()const
 String
 ValueNode_DynamicList::link_local_name(int i)const
 {
 String
 ValueNode_DynamicList::link_local_name(int i)const
 {
-       assert(i>=0 && (unsigned)i<list.size());
+       assert(i>=0 && i<link_count());
+
        return etl::strprintf(_("Item %03d"),i+1);
 }
 
        return etl::strprintf(_("Item %03d"),i+1);
 }
 
@@ -719,6 +722,7 @@ LinkableValueNode*
 ValueNode_DynamicList::create_new()const
 {
        assert(0);
 ValueNode_DynamicList::create_new()const
 {
        assert(0);
+
        return 0;
 }
 
        return 0;
 }
 
index 822a3eb..59ccd64 100644 (file)
@@ -104,7 +104,8 @@ ValueNode_Exp::get_local_name()const
 bool
 ValueNode_Exp::set_link_vfunc(int i,ValueNode::Handle x)
 {
 bool
 ValueNode_Exp::set_link_vfunc(int i,ValueNode::Handle x)
 {
-       assert(i==0 || i==1);
+       assert(i>=0 && i<link_count());
+
        if(i==0)
        {
                exp_=x;
        if(i==0)
        {
                exp_=x;
@@ -123,7 +124,8 @@ ValueNode_Exp::set_link_vfunc(int i,ValueNode::Handle x)
 ValueNode::LooseHandle
 ValueNode_Exp::get_link_vfunc(int i)const
 {
 ValueNode::LooseHandle
 ValueNode_Exp::get_link_vfunc(int i)const
 {
-       assert(i==0 || i==1);
+       assert(i>=0 && i<link_count());
+
        if(i==0)
                return exp_;
        if(i==1)
        if(i==0)
                return exp_;
        if(i==1)
@@ -141,7 +143,8 @@ ValueNode_Exp::link_count()const
 String
 ValueNode_Exp::link_name(int i)const
 {
 String
 ValueNode_Exp::link_name(int i)const
 {
-       assert(i==0 || i==1);
+       assert(i>=0 && i<link_count());
+
        if(i==0)
                return "exp";
        if(i==1)
        if(i==0)
                return "exp";
        if(i==1)
@@ -152,7 +155,8 @@ ValueNode_Exp::link_name(int i)const
 String
 ValueNode_Exp::link_local_name(int i)const
 {
 String
 ValueNode_Exp::link_local_name(int i)const
 {
-       assert(i==0 || i==1);
+       assert(i>=0 && i<link_count());
+
        if(i==0)
                return _("Exponent");
        if(i==1)
        if(i==0)
                return _("Exponent");
        if(i==1)
index fa43922..139de98 100644 (file)
@@ -124,7 +124,8 @@ synfig::ValueNode_GradientRotate::operator()(Time t)const
 bool
 ValueNode_GradientRotate::set_link_vfunc(int i,ValueNode::Handle x)
 {
 bool
 ValueNode_GradientRotate::set_link_vfunc(int i,ValueNode::Handle x)
 {
-       assert(i>=0 && i<3);
+       assert(i>=0 && i<link_count());
+
        switch(i)
        {
                case 0:
        switch(i)
        {
                case 0:
@@ -141,7 +142,8 @@ ValueNode_GradientRotate::set_link_vfunc(int i,ValueNode::Handle x)
 ValueNode::LooseHandle
 ValueNode_GradientRotate::get_link_vfunc(int i)const
 {
 ValueNode::LooseHandle
 ValueNode_GradientRotate::get_link_vfunc(int i)const
 {
-       assert(i>=0 && i<3);
+       assert(i>=0 && i<link_count());
+
        switch(i)
        {
                case 0:
        switch(i)
        {
                case 0:
@@ -161,7 +163,8 @@ ValueNode_GradientRotate::link_count()const
 String
 ValueNode_GradientRotate::link_local_name(int i)const
 {
 String
 ValueNode_GradientRotate::link_local_name(int i)const
 {
-       assert(i>=0 && i<2);
+       assert(i>=0 && i<link_count());
+
        switch(i)
        {
                case 0:
        switch(i)
        {
                case 0:
@@ -176,7 +179,8 @@ ValueNode_GradientRotate::link_local_name(int i)const
 String
 ValueNode_GradientRotate::link_name(int i)const
 {
 String
 ValueNode_GradientRotate::link_name(int i)const
 {
-       assert(i>=0 && i<2);
+       assert(i>=0 && i<link_count());
+
        switch(i)
        {
                case 0:
        switch(i)
        {
                case 0:
index de6a114..1040c9a 100644 (file)
@@ -99,7 +99,8 @@ ValueNode_Integer::~ValueNode_Integer()
 bool
 ValueNode_Integer::set_link_vfunc(int i,ValueNode::Handle x)
 {
 bool
 ValueNode_Integer::set_link_vfunc(int i,ValueNode::Handle x)
 {
-       assert(i >= 0 && i < link_count());
+       assert(i>=0 && i<link_count());
+
        switch(i)
        {
        case 0:  integer_ = x; break;
        switch(i)
        {
        case 0:  integer_ = x; break;
@@ -114,7 +115,8 @@ ValueNode_Integer::set_link_vfunc(int i,ValueNode::Handle x)
 ValueNode::LooseHandle
 ValueNode_Integer::get_link_vfunc(int i)const
 {
 ValueNode::LooseHandle
 ValueNode_Integer::get_link_vfunc(int i)const
 {
-       assert(i >= 0 && i < link_count());
+       assert(i>=0 && i<link_count());
+
        if(i==0) return integer_;
 
        return 0;
        if(i==0) return integer_;
 
        return 0;
@@ -129,7 +131,8 @@ ValueNode_Integer::link_count()const
 String
 ValueNode_Integer::link_local_name(int i)const
 {
 String
 ValueNode_Integer::link_local_name(int i)const
 {
-       assert(i >= 0 && i < link_count());
+       assert(i>=0 && i<link_count());
+
        if(i==0) return _("Integer");
        return String();
 }
        if(i==0) return _("Integer");
        return String();
 }
@@ -137,7 +140,8 @@ ValueNode_Integer::link_local_name(int i)const
 String
 ValueNode_Integer::link_name(int i)const
 {
 String
 ValueNode_Integer::link_name(int i)const
 {
-       assert(i >= 0 && i < link_count());
+       assert(i>=0 && i<link_count());
+
        if(i==0) return "integer";
        return String();
 }
        if(i==0) return "integer";
        return String();
 }
index 01e67a2..a0484a0 100644 (file)
@@ -157,7 +157,8 @@ ValueNode_Linear::check_type(ValueBase::Type type)
 bool
 ValueNode_Linear::set_link_vfunc(int i,ValueNode::Handle x)
 {
 bool
 ValueNode_Linear::set_link_vfunc(int i,ValueNode::Handle x)
 {
-       assert(i==0 || i==1);
+       assert(i>=0 && i<link_count());
+
        if(i==0)
        {
                m_=x;
        if(i==0)
        {
                m_=x;
@@ -176,7 +177,8 @@ ValueNode_Linear::set_link_vfunc(int i,ValueNode::Handle x)
 ValueNode::LooseHandle
 ValueNode_Linear::get_link_vfunc(int i)const
 {
 ValueNode::LooseHandle
 ValueNode_Linear::get_link_vfunc(int i)const
 {
-       assert(i==0 || i==1);
+       assert(i>=0 && i<link_count());
+
        if(i==0) return m_;
        if(i==1) return b_;
        return 0;
        if(i==0) return m_;
        if(i==1) return b_;
        return 0;
@@ -191,7 +193,8 @@ ValueNode_Linear::link_count()const
 String
 ValueNode_Linear::link_name(int i)const
 {
 String
 ValueNode_Linear::link_name(int i)const
 {
-       assert(i==0 || i==1);
+       assert(i>=0 && i<link_count());
+
        if(i==0) return "slope";
        if(i==1) return "offset";
        return String();
        if(i==0) return "slope";
        if(i==1) return "offset";
        return String();
@@ -200,7 +203,8 @@ ValueNode_Linear::link_name(int i)const
 String
 ValueNode_Linear::link_local_name(int i)const
 {
 String
 ValueNode_Linear::link_local_name(int i)const
 {
-       assert(i==0 || i==1);
+       assert(i>=0 && i<link_count());
+
        if(i==0)
                switch(get_type())
                {
        if(i==0)
                switch(get_type())
                {
index 40ce2b6..6ab24e4 100644 (file)
@@ -141,8 +141,7 @@ ValueNode_RadialComposite::link_count()const
 bool
 ValueNode_RadialComposite::set_link_vfunc(int i,ValueNode::Handle x)
 {
 bool
 ValueNode_RadialComposite::set_link_vfunc(int i,ValueNode::Handle x)
 {
-       assert(i>=0);
-       assert(i<6);
+       assert(i>=0 && i<link_count());
 
        if(PlaceholderValueNode::Handle::cast_dynamic(x))
        {
 
        if(PlaceholderValueNode::Handle::cast_dynamic(x))
        {
@@ -153,7 +152,6 @@ ValueNode_RadialComposite::set_link_vfunc(int i,ValueNode::Handle x)
        switch(get_type())
        {
                case ValueBase::TYPE_VECTOR:
        switch(get_type())
        {
                case ValueBase::TYPE_VECTOR:
-                       assert(i<2);
                        if(i==0 && x->get_type()!=ValueBase::TYPE_REAL)
                                return false;
                        if(i==1 && x->get_type()!=ValueBase::TYPE_ANGLE)
                        if(i==0 && x->get_type()!=ValueBase::TYPE_REAL)
                                return false;
                        if(i==1 && x->get_type()!=ValueBase::TYPE_ANGLE)
@@ -163,7 +161,6 @@ ValueNode_RadialComposite::set_link_vfunc(int i,ValueNode::Handle x)
                        break;
 
                case ValueBase::TYPE_COLOR:
                        break;
 
                case ValueBase::TYPE_COLOR:
-                       assert(i<4);
                        if((i==0 || i==1 || i==3) && x->get_type()!=ValueBase::TYPE_REAL)
                                return false;
                        if((i==2) && x->get_type()!=ValueBase::TYPE_ANGLE)
                        if((i==0 || i==1 || i==3) && x->get_type()!=ValueBase::TYPE_REAL)
                                return false;
                        if((i==2) && x->get_type()!=ValueBase::TYPE_ANGLE)
@@ -182,14 +179,16 @@ ValueNode_RadialComposite::set_link_vfunc(int i,ValueNode::Handle x)
 ValueNode::LooseHandle
 ValueNode_RadialComposite::get_link_vfunc(int i)const
 {
 ValueNode::LooseHandle
 ValueNode_RadialComposite::get_link_vfunc(int i)const
 {
-       assert(i>=0 && i<6);
+       assert(i>=0 && i<link_count());
+
        return components[i];
 }
 
 String
 ValueNode_RadialComposite::link_local_name(int i)const
 {
        return components[i];
 }
 
 String
 ValueNode_RadialComposite::link_local_name(int i)const
 {
-       assert(i>=0 && i<6);
+       assert(i>=0 && i<link_count());
+
        switch(get_type())
        {
                case ValueBase::TYPE_VECTOR:
        switch(get_type())
        {
                case ValueBase::TYPE_VECTOR:
@@ -221,7 +220,8 @@ ValueNode_RadialComposite::link_local_name(int i)const
 String
 ValueNode_RadialComposite::link_name(int i)const
 {
 String
 ValueNode_RadialComposite::link_name(int i)const
 {
-       assert(i>=0 && i<5);
+       assert(i>=0 && i<link_count());
+
        return strprintf("c%d",i);
 }
 
        return strprintf("c%d",i);
 }
 
index df9d12e..86fea4b 100644 (file)
@@ -150,7 +150,8 @@ synfig::ValueNode_Range::operator()(Time t)const
 bool
 ValueNode_Range::set_link_vfunc(int i,ValueNode::Handle value)
 {
 bool
 ValueNode_Range::set_link_vfunc(int i,ValueNode::Handle value)
 {
-       assert(i>=0 && i<3);
+       assert(i>=0 && i<link_count());
+
        switch(i)
        {
                case 0:
        switch(i)
        {
                case 0:
@@ -173,7 +174,8 @@ ValueNode_Range::set_link_vfunc(int i,ValueNode::Handle value)
 ValueNode::LooseHandle
 ValueNode_Range::get_link_vfunc(int i)const
 {
 ValueNode::LooseHandle
 ValueNode_Range::get_link_vfunc(int i)const
 {
-       assert(i>=0 && i<3);
+       assert(i>=0 && i<link_count());
+
        switch(i)
        {
                case 0: return min_;
        switch(i)
        {
                case 0: return min_;
@@ -192,7 +194,8 @@ ValueNode_Range::link_count()const
 String
 ValueNode_Range::link_local_name(int i)const
 {
 String
 ValueNode_Range::link_local_name(int i)const
 {
-       assert(i>=0 && i<3);
+       assert(i>=0 && i<link_count());
+
        switch(i)
        {
                case 0: return _("Min");
        switch(i)
        {
                case 0: return _("Min");
@@ -205,7 +208,8 @@ ValueNode_Range::link_local_name(int i)const
 String
 ValueNode_Range::link_name(int i)const
 {
 String
 ValueNode_Range::link_name(int i)const
 {
-       assert(i>=0 && i<3);
+       assert(i>=0 && i<link_count());
+
        switch(i)
        {
                case 0: return "min";
        switch(i)
        {
                case 0: return "min";
index 1749d63..b524e2b 100644 (file)
@@ -83,7 +83,8 @@ ValueNode_Reciprocal::~ValueNode_Reciprocal()
 bool
 ValueNode_Reciprocal::set_link_vfunc(int i,ValueNode::Handle x)
 {
 bool
 ValueNode_Reciprocal::set_link_vfunc(int i,ValueNode::Handle x)
 {
-       assert(i >= 0 && i < link_count());
+       assert(i>=0 && i<link_count());
+
        switch(i)
        {
        case 0:  link_     = x; break;
        switch(i)
        {
        case 0:  link_     = x; break;
@@ -100,7 +101,8 @@ ValueNode_Reciprocal::set_link_vfunc(int i,ValueNode::Handle x)
 ValueNode::LooseHandle
 ValueNode_Reciprocal::get_link_vfunc(int i)const
 {
 ValueNode::LooseHandle
 ValueNode_Reciprocal::get_link_vfunc(int i)const
 {
-       assert(i >= 0 && i < link_count());
+       assert(i>=0 && i<link_count());
+
        if(i==0) return link_;
        if(i==1) return epsilon_;
        if(i==2) return infinite_;
        if(i==0) return link_;
        if(i==1) return epsilon_;
        if(i==2) return infinite_;
@@ -117,7 +119,8 @@ ValueNode_Reciprocal::link_count()const
 String
 ValueNode_Reciprocal::link_local_name(int i)const
 {
 String
 ValueNode_Reciprocal::link_local_name(int i)const
 {
-       assert(i >= 0 && i < link_count());
+       assert(i>=0 && i<link_count());
+
        if(i==0) return _("Link");
        if(i==1) return _("Epsilon");
        if(i==2) return _("Infinite");
        if(i==0) return _("Link");
        if(i==1) return _("Epsilon");
        if(i==2) return _("Infinite");
@@ -127,7 +130,8 @@ ValueNode_Reciprocal::link_local_name(int i)const
 String
 ValueNode_Reciprocal::link_name(int i)const
 {
 String
 ValueNode_Reciprocal::link_name(int i)const
 {
-       assert(i >= 0 && i < link_count());
+       assert(i>=0 && i<link_count());
+
        if(i==0) return "link";
        if(i==1) return "epsilon";
        if(i==2) return "infinite";
        if(i==0) return "link";
        if(i==1) return "epsilon";
        if(i==2) return "infinite";
index f0ad6df..aa5dacc 100644 (file)
@@ -80,7 +80,8 @@ ValueNode_Reference::~ValueNode_Reference()
 bool
 ValueNode_Reference::set_link_vfunc(int i,ValueNode::Handle x)
 {
 bool
 ValueNode_Reference::set_link_vfunc(int i,ValueNode::Handle x)
 {
-       assert(i==0);
+       assert(i>=0 && i<link_count());
+
        if(x->get_type()!=get_type() && !PlaceholderValueNode::Handle::cast_dynamic(x))
                return false;
        link_=x;
        if(x->get_type()!=get_type() && !PlaceholderValueNode::Handle::cast_dynamic(x))
                return false;
        link_=x;
@@ -91,7 +92,8 @@ ValueNode_Reference::set_link_vfunc(int i,ValueNode::Handle x)
 ValueNode::LooseHandle
 ValueNode_Reference::get_link_vfunc(int i)const
 {
 ValueNode::LooseHandle
 ValueNode_Reference::get_link_vfunc(int i)const
 {
-       assert(i==0);
+       assert(i>=0 && i<link_count());
+
        return link_;
 }
 
        return link_;
 }
 
@@ -104,14 +106,25 @@ ValueNode_Reference::link_count()const
 String
 ValueNode_Reference::link_local_name(int i)const
 {
 String
 ValueNode_Reference::link_local_name(int i)const
 {
-       assert(i==0);
-       return _("Link");
+       assert(i>=0 && i<link_count());
+
+       switch(i)
+       {
+       case 0: return _("Link");
+       }
+       return String();
 }
 
 String
 }
 
 String
-ValueNode_Reference::link_name(int /*i*/)const
+ValueNode_Reference::link_name(int i)const
 {
 {
-       return "link";
+       assert(i>=0 && i<link_count());
+
+       switch(i)
+       {
+       case 0: return "link";
+       }
+       return String();
 }
 
 int
 }
 
 int
index 44f576c..181815f 100644 (file)
@@ -202,6 +202,7 @@ bool
 ValueNode_Repeat_Gradient::set_link_vfunc(int i,ValueNode::Handle x)
 {
        assert(i>=0 && i<link_count());
 ValueNode_Repeat_Gradient::set_link_vfunc(int i,ValueNode::Handle x)
 {
        assert(i>=0 && i<link_count());
+
        switch(i)
        {
                case 0:
        switch(i)
        {
                case 0:
@@ -234,6 +235,7 @@ ValueNode::LooseHandle
 ValueNode_Repeat_Gradient::get_link_vfunc(int i)const
 {
        assert(i>=0 && i<link_count());
 ValueNode_Repeat_Gradient::get_link_vfunc(int i)const
 {
        assert(i>=0 && i<link_count());
+
        switch(i)
        {
                case 0:  return gradient_;
        switch(i)
        {
                case 0:  return gradient_;
@@ -257,6 +259,7 @@ String
 ValueNode_Repeat_Gradient::link_local_name(int i)const
 {
        assert(i>=0 && i<link_count());
 ValueNode_Repeat_Gradient::link_local_name(int i)const
 {
        assert(i>=0 && i<link_count());
+
        switch(i)
        {
                case 0:  return _("Gradient");
        switch(i)
        {
                case 0:  return _("Gradient");
@@ -274,6 +277,7 @@ String
 ValueNode_Repeat_Gradient::link_name(int i)const
 {
        assert(i>=0 && i<link_count());
 ValueNode_Repeat_Gradient::link_name(int i)const
 {
        assert(i>=0 && i<link_count());
+
        switch(i)
        {
                case 0:  return "gradient";
        switch(i)
        {
                case 0:  return "gradient";
index ffe90d6..9c2924a 100644 (file)
@@ -34,7 +34,6 @@
 #include "valuenode_scale.h"
 #include "valuenode_const.h"
 #include <stdexcept>
 #include "valuenode_scale.h"
 #include "valuenode_const.h"
 #include <stdexcept>
-#include <cassert>
 #include "color.h"
 #include "vector.h"
 #include "time.h"
 #include "color.h"
 #include "vector.h"
 #include "time.h"
@@ -193,8 +192,7 @@ synfig::ValueNode_Scale::operator()(Time t)const
 bool
 ValueNode_Scale::set_link_vfunc(int i,ValueNode::Handle x)
 {
 bool
 ValueNode_Scale::set_link_vfunc(int i,ValueNode::Handle x)
 {
-       if(!(i==0 || i==1))
-               return false;
+       assert(i>=0 && i<link_count());
 
        if(i==0 && !set_value_node(x))
                return false;
 
        if(i==0 && !set_value_node(x))
                return false;
@@ -210,7 +208,8 @@ ValueNode_Scale::set_link_vfunc(int i,ValueNode::Handle x)
 ValueNode::LooseHandle
 ValueNode_Scale::get_link_vfunc(int i)const
 {
 ValueNode::LooseHandle
 ValueNode_Scale::get_link_vfunc(int i)const
 {
-       assert(i==0 || i==1);
+       assert(i>=0 && i<link_count());
+
        if(i==0)
                return value_node;
        else if(i==1)
        if(i==0)
                return value_node;
        else if(i==1)
@@ -227,7 +226,8 @@ ValueNode_Scale::link_count()const
 String
 ValueNode_Scale::link_local_name(int i)const
 {
 String
 ValueNode_Scale::link_local_name(int i)const
 {
-       assert(i==0 || i==1);
+       assert(i>=0 && i<link_count());
+
        if(i==0)
                return _("Link");
        else if(i==1)
        if(i==0)
                return _("Link");
        else if(i==1)
@@ -238,7 +238,8 @@ ValueNode_Scale::link_local_name(int i)const
 String
 ValueNode_Scale::link_name(int i)const
 {
 String
 ValueNode_Scale::link_name(int i)const
 {
-       assert(i==0 || i==1);
+       assert(i>=0 && i<link_count());
+
        if(i==0)
                return "link";
        else if(i==1)
        if(i==0)
                return "link";
        else if(i==1)
index bb012b5..b875c62 100644 (file)
@@ -114,7 +114,8 @@ ValueNode_SegCalcTangent::check_type(ValueBase::Type type)
 bool
 ValueNode_SegCalcTangent::set_link_vfunc(int i,ValueNode::Handle x)
 {
 bool
 ValueNode_SegCalcTangent::set_link_vfunc(int i,ValueNode::Handle x)
 {
-       assert(i==0 || i==1);
+       assert(i>=0 && i<link_count());
+
        if(i==0)
        {
                segment_=x;
        if(i==0)
        {
                segment_=x;
@@ -133,7 +134,8 @@ ValueNode_SegCalcTangent::set_link_vfunc(int i,ValueNode::Handle x)
 ValueNode::LooseHandle
 ValueNode_SegCalcTangent::get_link_vfunc(int i)const
 {
 ValueNode::LooseHandle
 ValueNode_SegCalcTangent::get_link_vfunc(int i)const
 {
-       assert(i==0 || i==1);
+       assert(i>=0 && i<link_count());
+
        if(i==0)
                return segment_;
        if(i==1)
        if(i==0)
                return segment_;
        if(i==1)
@@ -151,7 +153,8 @@ ValueNode_SegCalcTangent::link_count()const
 String
 ValueNode_SegCalcTangent::link_name(int i)const
 {
 String
 ValueNode_SegCalcTangent::link_name(int i)const
 {
-       assert(i==0 || i==1);
+       assert(i>=0 && i<link_count());
+
        if(i==0)
                return "segment";
        if(i==1)
        if(i==0)
                return "segment";
        if(i==1)
@@ -162,7 +165,8 @@ ValueNode_SegCalcTangent::link_name(int i)const
 String
 ValueNode_SegCalcTangent::link_local_name(int i)const
 {
 String
 ValueNode_SegCalcTangent::link_local_name(int i)const
 {
-       assert(i==0 || i==1);
+       assert(i>=0 && i<link_count());
+
        if(i==0)
                return _("Segment");
        if(i==1)
        if(i==0)
                return _("Segment");
        if(i==1)
index 277a4cf..db77757 100644 (file)
@@ -107,7 +107,8 @@ ValueNode_SegCalcVertex::check_type(ValueBase::Type type)
 bool
 ValueNode_SegCalcVertex::set_link_vfunc(int i,ValueNode::Handle x)
 {
 bool
 ValueNode_SegCalcVertex::set_link_vfunc(int i,ValueNode::Handle x)
 {
-       assert(i==0 || i==1);
+       assert(i>=0 && i<link_count());
+
        if(i==0)
        {
                segment_=x;
        if(i==0)
        {
                segment_=x;
@@ -126,7 +127,8 @@ ValueNode_SegCalcVertex::set_link_vfunc(int i,ValueNode::Handle x)
 ValueNode::LooseHandle
 ValueNode_SegCalcVertex::get_link_vfunc(int i)const
 {
 ValueNode::LooseHandle
 ValueNode_SegCalcVertex::get_link_vfunc(int i)const
 {
-       assert(i==0 || i==1);
+       assert(i>=0 && i<link_count());
+
        if(i==0)
                return segment_;
        if(i==1)
        if(i==0)
                return segment_;
        if(i==1)
@@ -144,7 +146,8 @@ ValueNode_SegCalcVertex::link_count()const
 String
 ValueNode_SegCalcVertex::link_name(int i)const
 {
 String
 ValueNode_SegCalcVertex::link_name(int i)const
 {
-       assert(i==0 || i==1);
+       assert(i>=0 && i<link_count());
+
        if(i==0)
                return "segment";
        if(i==1)
        if(i==0)
                return "segment";
        if(i==1)
@@ -155,7 +158,8 @@ ValueNode_SegCalcVertex::link_name(int i)const
 String
 ValueNode_SegCalcVertex::link_local_name(int i)const
 {
 String
 ValueNode_SegCalcVertex::link_local_name(int i)const
 {
-       assert(i==0 || i==1);
+       assert(i>=0 && i<link_count());
+
        if(i==0)
                return _("Segment");
        if(i==1)
        if(i==0)
                return _("Segment");
        if(i==1)
index c534b19..4fc56cd 100644 (file)
@@ -115,7 +115,8 @@ ValueNode_Sine::check_type(ValueBase::Type type)
 bool
 ValueNode_Sine::set_link_vfunc(int i,ValueNode::Handle x)
 {
 bool
 ValueNode_Sine::set_link_vfunc(int i,ValueNode::Handle x)
 {
-       assert(i==0 || i==1);
+       assert(i>=0 && i<link_count());
+
        if(i==0)
        {
                angle_=x;
        if(i==0)
        {
                angle_=x;
@@ -134,7 +135,8 @@ ValueNode_Sine::set_link_vfunc(int i,ValueNode::Handle x)
 ValueNode::LooseHandle
 ValueNode_Sine::get_link_vfunc(int i)const
 {
 ValueNode::LooseHandle
 ValueNode_Sine::get_link_vfunc(int i)const
 {
-       assert(i==0 || i==1);
+       assert(i>=0 && i<link_count());
+
        if(i==0)
                return angle_;
        if(i==1)
        if(i==0)
                return angle_;
        if(i==1)
@@ -152,7 +154,8 @@ ValueNode_Sine::link_count()const
 String
 ValueNode_Sine::link_name(int i)const
 {
 String
 ValueNode_Sine::link_name(int i)const
 {
-       assert(i==0 || i==1);
+       assert(i>=0 && i<link_count());
+
        if(i==0)
                return "angle";
        if(i==1)
        if(i==0)
                return "angle";
        if(i==1)
@@ -163,7 +166,8 @@ ValueNode_Sine::link_name(int i)const
 String
 ValueNode_Sine::link_local_name(int i)const
 {
 String
 ValueNode_Sine::link_local_name(int i)const
 {
-       assert(i==0 || i==1);
+       assert(i>=0 && i<link_count());
+
        if(i==0)
                return _("Angle");
        if(i==1)
        if(i==0)
                return _("Angle");
        if(i==1)
index de0171e..9609345 100644 (file)
@@ -164,6 +164,7 @@ bool
 ValueNode_Stripes::set_link_vfunc(int i,ValueNode::Handle x)
 {
        assert(i>=0 && i<link_count());
 ValueNode_Stripes::set_link_vfunc(int i,ValueNode::Handle x)
 {
        assert(i>=0 && i<link_count());
+
        switch(i)
        {
                case 0:
        switch(i)
        {
                case 0:
@@ -187,6 +188,7 @@ ValueNode::LooseHandle
 ValueNode_Stripes::get_link_vfunc(int i)const
 {
        assert(i>=0 && i<link_count());
 ValueNode_Stripes::get_link_vfunc(int i)const
 {
        assert(i>=0 && i<link_count());
+
        switch(i)
        {
                case 0:
        switch(i)
        {
                case 0:
@@ -211,6 +213,7 @@ String
 ValueNode_Stripes::link_local_name(int i)const
 {
        assert(i>=0 && i<link_count());
 ValueNode_Stripes::link_local_name(int i)const
 {
        assert(i>=0 && i<link_count());
+
        switch(i)
        {
                case 0:
        switch(i)
        {
                case 0:
@@ -230,6 +233,7 @@ String
 ValueNode_Stripes::link_name(int i)const
 {
        assert(i>=0 && i<link_count());
 ValueNode_Stripes::link_name(int i)const
 {
        assert(i>=0 && i<link_count());
+
        switch(i)
        {
                case 0:
        switch(i)
        {
                case 0:
index 412ef52..f9293bb 100644 (file)
@@ -191,7 +191,8 @@ synfig::ValueNode_Subtract::operator()(Time t)const
 bool
 ValueNode_Subtract::set_link_vfunc(int i,ValueNode::Handle value)
 {
 bool
 ValueNode_Subtract::set_link_vfunc(int i,ValueNode::Handle value)
 {
-       assert(i>=0 && i<3);
+       assert(i>=0 && i<link_count());
+
        switch(i)
        {
                case 0:
        switch(i)
        {
                case 0:
@@ -212,7 +213,8 @@ ValueNode_Subtract::set_link_vfunc(int i,ValueNode::Handle value)
 ValueNode::LooseHandle
 ValueNode_Subtract::get_link_vfunc(int i)const
 {
 ValueNode::LooseHandle
 ValueNode_Subtract::get_link_vfunc(int i)const
 {
-       assert(i>=0 && i<3);
+       assert(i>=0 && i<link_count());
+
        switch(i)
        {
                case 0: return ref_a;
        switch(i)
        {
                case 0: return ref_a;
@@ -231,7 +233,8 @@ ValueNode_Subtract::link_count()const
 String
 ValueNode_Subtract::link_local_name(int i)const
 {
 String
 ValueNode_Subtract::link_local_name(int i)const
 {
-       assert(i>=0 && i<3);
+       assert(i>=0 && i<link_count());
+
        switch(i)
        {
                case 0: return _("LHS");
        switch(i)
        {
                case 0: return _("LHS");
@@ -244,7 +247,8 @@ ValueNode_Subtract::link_local_name(int i)const
 String
 ValueNode_Subtract::link_name(int i)const
 {
 String
 ValueNode_Subtract::link_name(int i)const
 {
-       assert(i>=0 && i<3);
+       assert(i>=0 && i<link_count());
+
        switch(i)
        {
                case 0: return "lhs";
        switch(i)
        {
                case 0: return "lhs";
index d55f7df..17f6af3 100644 (file)
@@ -83,6 +83,7 @@ bool
 ValueNode_Switch::set_link_vfunc(int i,ValueNode::Handle x)
 {
        assert(i>=0 && i<link_count());
 ValueNode_Switch::set_link_vfunc(int i,ValueNode::Handle x)
 {
        assert(i>=0 && i<link_count());
+
        switch(i)
        {
        case 0:
        switch(i)
        {
        case 0:
@@ -109,6 +110,7 @@ ValueNode::LooseHandle
 ValueNode_Switch::get_link_vfunc(int i)const
 {
        assert(i>=0 && i<link_count());
 ValueNode_Switch::get_link_vfunc(int i)const
 {
        assert(i>=0 && i<link_count());
+
        switch(i)
        {
        case 0: return link_off_;
        switch(i)
        {
        case 0: return link_off_;
@@ -128,6 +130,7 @@ String
 ValueNode_Switch::link_name(int i)const
 {
        assert(i>=0 && i<link_count());
 ValueNode_Switch::link_name(int i)const
 {
        assert(i>=0 && i<link_count());
+
        switch(i)
        {
        case 0: return "link_off";
        switch(i)
        {
        case 0: return "link_off";
@@ -141,6 +144,7 @@ String
 ValueNode_Switch::link_local_name(int i)const
 {
        assert(i>=0 && i<link_count());
 ValueNode_Switch::link_local_name(int i)const
 {
        assert(i>=0 && i<link_count());
+
        switch(i)
        {
        case 0: return "Link Off";
        switch(i)
        {
        case 0: return "Link Off";
index 39cc91d..bb564c6 100644 (file)
@@ -258,7 +258,8 @@ synfig::ValueNode_TimedSwap::operator()(Time t)const
 bool
 ValueNode_TimedSwap::set_link_vfunc(int i,ValueNode::Handle x)
 {
 bool
 ValueNode_TimedSwap::set_link_vfunc(int i,ValueNode::Handle x)
 {
-       assert(i>=0 && i<4);
+       assert(i>=0 && i<link_count());
+
        switch(i)
        {
        case 0: return set_before(x);
        switch(i)
        {
        case 0: return set_before(x);
@@ -272,7 +273,8 @@ ValueNode_TimedSwap::set_link_vfunc(int i,ValueNode::Handle x)
 ValueNode::LooseHandle
 ValueNode_TimedSwap::get_link_vfunc(int i)const
 {
 ValueNode::LooseHandle
 ValueNode_TimedSwap::get_link_vfunc(int i)const
 {
-       assert(i>=0 && i<4);
+       assert(i>=0 && i<link_count());
+
        switch(i)
        {
        case 0: return get_before();
        switch(i)
        {
        case 0: return get_before();
@@ -292,7 +294,8 @@ ValueNode_TimedSwap::link_count()const
 String
 ValueNode_TimedSwap::link_local_name(int i)const
 {
 String
 ValueNode_TimedSwap::link_local_name(int i)const
 {
-       assert(i>=0 && i<4);
+       assert(i>=0 && i<link_count());
+
        switch(i)
        {
        case 0: return _("Before");
        switch(i)
        {
        case 0: return _("Before");
@@ -306,7 +309,8 @@ ValueNode_TimedSwap::link_local_name(int i)const
 String
 ValueNode_TimedSwap::link_name(int i)const
 {
 String
 ValueNode_TimedSwap::link_name(int i)const
 {
-       assert(i>=0 && i<4);
+       assert(i>=0 && i<link_count());
+
        switch(i)
        {
        case 0: return "before";
        switch(i)
        {
        case 0: return "before";
index 8ed0fad..53c4360 100644 (file)
@@ -84,7 +84,8 @@ ValueNode_TimeLoop::~ValueNode_TimeLoop()
 bool
 ValueNode_TimeLoop::set_link_vfunc(int i,ValueNode::Handle x)
 {
 bool
 ValueNode_TimeLoop::set_link_vfunc(int i,ValueNode::Handle x)
 {
-       assert(i >= 0 && i < link_count());
+       assert(i>=0 && i<link_count());
+
        switch(i)
        {
        case 0:  link_       = x; break;
        switch(i)
        {
        case 0:  link_       = x; break;
@@ -102,7 +103,8 @@ ValueNode_TimeLoop::set_link_vfunc(int i,ValueNode::Handle x)
 ValueNode::LooseHandle
 ValueNode_TimeLoop::get_link_vfunc(int i)const
 {
 ValueNode::LooseHandle
 ValueNode_TimeLoop::get_link_vfunc(int i)const
 {
-       assert(i >= 0 && i < link_count());
+       assert(i>=0 && i<link_count());
+
        if(i==0) return link_;
        if(i==1) return link_time_;
        if(i==2) return local_time_;
        if(i==0) return link_;
        if(i==1) return link_time_;
        if(i==2) return local_time_;
@@ -120,7 +122,8 @@ ValueNode_TimeLoop::link_count()const
 String
 ValueNode_TimeLoop::link_local_name(int i)const
 {
 String
 ValueNode_TimeLoop::link_local_name(int i)const
 {
-       assert(i >= 0 && i < link_count());
+       assert(i>=0 && i<link_count());
+
        if(i==0) return _("Link");
        if(i==1) return _("Link Time");
        if(i==2) return _("Local Time");
        if(i==0) return _("Link");
        if(i==1) return _("Link Time");
        if(i==2) return _("Local Time");
@@ -131,7 +134,8 @@ ValueNode_TimeLoop::link_local_name(int i)const
 String
 ValueNode_TimeLoop::link_name(int i)const
 {
 String
 ValueNode_TimeLoop::link_name(int i)const
 {
-       assert(i >= 0 && i < link_count());
+       assert(i>=0 && i<link_count());
+
        if(i==0) return "link";
        if(i==1) return "link_time";
        if(i==2) return "local_time";
        if(i==0) return "link";
        if(i==1) return "link_time";
        if(i==2) return "local_time";
index f92b1ce..497af2e 100644 (file)
@@ -116,7 +116,8 @@ synfig::ValueNode_TwoTone::operator()(Time t)const
 bool
 ValueNode_TwoTone::set_link_vfunc(int i,ValueNode::Handle x)
 {
 bool
 ValueNode_TwoTone::set_link_vfunc(int i,ValueNode::Handle x)
 {
-       assert(i>=0 && i<3);
+       assert(i>=0 && i<link_count());
+
        switch(i)
        {
                case 0:
        switch(i)
        {
                case 0:
@@ -133,7 +134,8 @@ ValueNode_TwoTone::set_link_vfunc(int i,ValueNode::Handle x)
 ValueNode::LooseHandle
 ValueNode_TwoTone::get_link_vfunc(int i)const
 {
 ValueNode::LooseHandle
 ValueNode_TwoTone::get_link_vfunc(int i)const
 {
-       assert(i>=0 && i<3);
+       assert(i>=0 && i<link_count());
+
        switch(i)
        {
                case 0:
        switch(i)
        {
                case 0:
@@ -153,7 +155,8 @@ ValueNode_TwoTone::link_count()const
 String
 ValueNode_TwoTone::link_local_name(int i)const
 {
 String
 ValueNode_TwoTone::link_local_name(int i)const
 {
-       assert(i>=0 && i<2);
+       assert(i>=0 && i<link_count());
+
        switch(i)
        {
                case 0:
        switch(i)
        {
                case 0:
@@ -168,7 +171,8 @@ ValueNode_TwoTone::link_local_name(int i)const
 String
 ValueNode_TwoTone::link_name(int i)const
 {
 String
 ValueNode_TwoTone::link_name(int i)const
 {
-       assert(i>=0 && i<2);
+       assert(i>=0 && i<link_count());
+
        switch(i)
        {
                case 0:
        switch(i)
        {
                case 0: