Applied the following dooglus patches from the sourceforge tracker:
[synfig.git] / synfig-core / trunk / src / synfig / loadcanvas.cpp
index 1c87a04..6edf4e5 100644 (file)
@@ -5,16 +5,17 @@
 **     $Id: loadcanvas.cpp,v 1.3 2005/01/04 23:40:44 darco Exp $
 **
 **     \legal
-**     Copyright (c) 2002 Robert B. Quattlebaum Jr.
+**     Copyright (c) 2002-2005 Robert B. Quattlebaum Jr., Adrian Bentley
 **
-**     This software and associated documentation
-**     are CONFIDENTIAL and PROPRIETARY property of
-**     the above-mentioned copyright holder.
+**     This package is free software; you can redistribute it and/or
+**     modify it under the terms of the GNU General Public License as
+**     published by the Free Software Foundation; either version 2 of
+**     the License, or (at your option) any later version.
 **
-**     You may not copy, print, publish, or in any
-**     other way distribute this software without
-**     a prior written agreement with
-**     the copyright holder.
+**     This package is distributed in the hope that it will be useful,
+**     but WITHOUT ANY WARRANTY; without even the implied warranty of
+**     MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+**     General Public License for more details.
 **     \endlegal
 */
 /* ========================================================================= */
@@ -316,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")
@@ -332,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());
@@ -2259,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_));
 
@@ -2320,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;