gnash-commit
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Gnash-commit] gnash ChangeLog server/as_value.cpp


From: Benjamin Wolsey
Subject: [Gnash-commit] gnash ChangeLog server/as_value.cpp
Date: Sat, 06 Oct 2007 12:01:00 +0000

CVSROOT:        /sources/gnash
Module name:    gnash
Changes by:     Benjamin Wolsey <bwy>   07/10/06 12:01:00

Modified files:
        .              : ChangeLog 
        server         : as_value.cpp 

Log message:
                * server/as_value.cpp (to_number): use boost::lexical_cast 
instead
                  of strtod to avoid differences in decimal point between 
locales
                  (not really verified with actionscript behaviour).

CVSWeb URLs:
http://cvs.savannah.gnu.org/viewcvs/gnash/ChangeLog?cvsroot=gnash&r1=1.4558&r2=1.4559
http://cvs.savannah.gnu.org/viewcvs/gnash/server/as_value.cpp?cvsroot=gnash&r1=1.84&r2=1.85

Patches:
Index: ChangeLog
===================================================================
RCS file: /sources/gnash/gnash/ChangeLog,v
retrieving revision 1.4558
retrieving revision 1.4559
diff -u -b -r1.4558 -r1.4559
--- ChangeLog   6 Oct 2007 10:32:28 -0000       1.4558
+++ ChangeLog   6 Oct 2007 12:00:59 -0000       1.4559
@@ -1,3 +1,8 @@
+2007-10-06 Benjamin Wolsey <address@hidden>
+
+       * server/as_value.cpp (to_number): use boost::lexical_cast instead
+         of strtod to avoid differences in decimal point between locales
+         (not really verified with actionscript behaviour).
 
 2007-10-06 Sandro Santilli <address@hidden>
 

Index: server/as_value.cpp
===================================================================
RCS file: /sources/gnash/gnash/server/as_value.cpp,v
retrieving revision 1.84
retrieving revision 1.85
diff -u -b -r1.84 -r1.85
--- server/as_value.cpp 4 Oct 2007 15:32:11 -0000       1.84
+++ server/as_value.cpp 6 Oct 2007 12:01:00 -0000       1.85
@@ -36,6 +36,8 @@
 #include "namedStrings.h"
 
 #include <boost/algorithm/string/case_conv.hpp>
+#include <boost/lexical_cast.hpp>
+
 
 using namespace std;
 
@@ -219,26 +221,23 @@
                        // @@ Moock says the rule here is: if the
                        // string is a valid float literal, then it
                        // gets converted; otherwise it is set to NaN.
-                       char* tail=0;
-                       const char* s = getStr().c_str();
 
-                       double d = strtod(s, &tail);
-                       // Detect failure by "tail" still being at the start of
-                       // the string or there being extra junk after the
-                       // converted characters.
-                       if ( tail == s || *tail != 0 )
-                       {
-                               // Failed conversion to Number.
-                               return (double)NAN;
-                       }
+                       try { 
+
+                               double d = 
boost::lexical_cast<double>(getStr());
 
-                       // "Infinity" and "-Infinity" are recognized by strtod()
-                       // but Flash Player returns NaN for them.
                        if ( isinf(d) ) {
                                return (double)NAN;
                        }
 
                        return d;
+
+                       } catch (boost::bad_lexical_cast &) {
+
+                               return (double)NAN;
+
+                       }
+
                }
 
                case NULLTYPE:




reply via email to

[Prev in Thread] Current Thread [Next in Thread]