Applied the following dooglus patches from the sourceforge tracker:
[synfig.git] / synfig-core / trunk / src / synfig / loadcanvas.cpp
index b370158..6edf4e5 100644 (file)
@@ -317,13 +317,7 @@ CanvasParser::parse_vector(xmlpp::Element *element,Canvas::Handle canvas)
                                error(element, "Undefined value in <x>");
                                return Vector();
                        }
-                       xmlpp::TextNode *text=dynamic_cast<xmlpp::TextNode*>(child->get_children().front());
-                       if(!text)
-                       {
-                               error(element,"I need a number, not an element!");
-                               return Vector();                                
-                       }
-                       vect[0]=atof(text->get_content().c_str());
+                       vect[0]=atof(child->get_child_text()->get_content().c_str());
                }
                else
                if(child->get_name()=="y")
@@ -333,13 +327,7 @@ CanvasParser::parse_vector(xmlpp::Element *element,Canvas::Handle canvas)
                                error(element, "Undefined value in <y>");
                                return Vector();
                        }
-                       xmlpp::TextNode *text=dynamic_cast<xmlpp::TextNode*>(child->get_children().front());
-                       if(!text)
-                       {
-                               error(element,"I need a number, not an element!");
-                               return Vector();                                
-                       }
-                       vect[1]=atof(text->get_content().c_str());
+                       vect[1]=atof(child->get_child_text()->get_content().c_str());
                }
                else
                        error_unexpected_element(child,child->get_name());
@@ -2260,6 +2248,7 @@ CanvasParser::parse_from_file_as(const String &file_,const String &as_)
        CHECK_EXPIRE_TIME();
        try
        {
+        ChangeLocale change_locale(LC_NUMERIC, "C");
                String file(unix_to_local_path(file_));
                String as(unix_to_local_path(as_));
 
@@ -2321,6 +2310,7 @@ CanvasParser::parse_from_string(const String &data)
 
        try
        {
+        ChangeLocale change_locale(LC_NUMERIC, "C");
                filename=_("<INTERNAL>");
                total_warnings_=0;
                xmlpp::DomParser parser;