Author: Carlos Lopez <[email protected]>
Date:   Thu Jan 12 19:02:56 2012 +0100

When loading a canvas. don't throw an exception when the value node referenced 
by "use" is not found. Show a message instead and don't load the canvas.

---

 synfig-core/src/synfig/loadcanvas.cpp |   10 +++++++++-
 1 files changed, 9 insertions(+), 1 deletions(-)

diff --git a/synfig-core/src/synfig/loadcanvas.cpp 
b/synfig-core/src/synfig/loadcanvas.cpp
index 3c03389..a1cc2ee 100644
--- a/synfig-core/src/synfig/loadcanvas.cpp
+++ b/synfig-core/src/synfig/loadcanvas.cpp
@@ -1319,6 +1319,8 @@ CanvasParser::parse_animated(xmlpp::Element 
*element,Canvas::Handle canvas)
                                }
                                else
                                        
waypoint_value_node=canvas->surefind_value_node(child->get_attribute("use")->get_value());
+                               
if(PlaceholderValueNode::Handle::cast_dynamic(waypoint_value_node))
+                                       error(child, strprintf(_("Unknown ID 
(%s) referenced in 
waypoint"),child->get_attribute("use")->get_value().c_str()));
                        }
                        else
                        {
@@ -1547,6 +1549,8 @@ CanvasParser::parse_linkable_value_node(xmlpp::Element 
*element,Canvas::Handle c
                                }
 
                                c[index] = canvas->surefind_value_node(id);
+                               
if(PlaceholderValueNode::Handle::cast_dynamic(c[index]))
+                                               throw 
Exception::IDNotFound("parse_linkable_value_noode()");
 
                                if (!c[index])
                                {
@@ -1953,6 +1957,8 @@ CanvasParser::parse_dynamic_list(xmlpp::Element 
*element,Canvas::Handle canvas)
                                try
                                {
                                        
list_entry.value_node=canvas->surefind_value_node(id);
+                                       
if(PlaceholderValueNode::Handle::cast_dynamic(list_entry.value_node))
+                                               throw 
Exception::IDNotFound("parse_dynamic_list()");
                                }
                                catch(Exception::IDNotFound)
                                {
@@ -2208,6 +2214,8 @@ CanvasParser::parse_layer(xmlpp::Element 
*element,Canvas::Handle canvas)
                                try
                                {
                                        handle<ValueNode> 
value_node=canvas->surefind_value_node(str);
+                                       
if(PlaceholderValueNode::Handle::cast_dynamic(value_node))
+                                               throw 
Exception::IDNotFound("parse_layer()");
 
                                        // Assign the value_node to the dynamic 
parameter list
                                        if (param_name == "segment_list" && 
(layer->get_name() == "region" || layer->get_name() == "outline"))
@@ -2220,7 +2228,7 @@ CanvasParser::parse_layer(xmlpp::Element 
*element,Canvas::Handle canvas)
                        }
                                catch(Exception::IDNotFound)
                                {
-                                       error(child,strprintf(_("Unknown ID 
(%s) referenced in <param>"),str.c_str()));
+                                       error(child,strprintf(_("Unknown ID 
(%s) referenced in parameter \"%s\""),str.c_str(), param_name.c_str()));
                                }
 
                                continue;


------------------------------------------------------------------------------
RSA(R) Conference 2012
Mar 27 - Feb 2
Save $400 by Jan. 27
Register now!
http://p.sf.net/sfu/rsa-sfdev2dev2
_______________________________________________
Synfig-devl mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/synfig-devl

Reply via email to