Don't accept illegal values for 'blend_method'. Use 'Composite' instead.
[synfig.git] / synfig-core / trunk / src / synfig / layer_composite.cpp
index 24f640d..7381017 100644 (file)
@@ -154,7 +154,18 @@ Layer_Composite::set_param(const String & param, const ValueBase &value)
                amount_=value.get(amount_);
        else
        if(param=="blend_method" && value.same_type_as(int()))
-               blend_method_=static_cast<Color::BlendMethod>(value.get(int()));
+       {
+               Color::BlendMethod blend_method = static_cast<Color::BlendMethod>(value.get(int()));
+
+               if (blend_method < 0 || blend_method >= Color::BLEND_END)
+               {
+                       warning("illegal value (%d) for blend_method - using Composite instead", blend_method);
+                       blend_method_ = Color::BLEND_COMPOSITE;
+                       return false;
+               }
+
+               blend_method_ = blend_method;
+       }
        else
                return Layer::set_param(param,value);
        return true;