[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Gnash-commit] gnash server/as_value.cpp testsuite/actionscrip...
From: |
Sandro Santilli |
Subject: |
[Gnash-commit] gnash server/as_value.cpp testsuite/actionscrip... |
Date: |
Fri, 30 Nov 2007 19:12:50 +0000 |
CVSROOT: /sources/gnash
Module name: gnash
Changes by: Sandro Santilli <strk> 07/11/30 19:12:50
Modified files:
server : as_value.cpp
testsuite/actionscript.all: Number.as
Log message:
Handle malformed hex strings in number conversion
CVSWeb URLs:
http://cvs.savannah.gnu.org/viewcvs/gnash/server/as_value.cpp?cvsroot=gnash&r1=1.100&r2=1.101
http://cvs.savannah.gnu.org/viewcvs/gnash/testsuite/actionscript.all/Number.as?cvsroot=gnash&r1=1.35&r2=1.36
Patches:
Index: server/as_value.cpp
===================================================================
RCS file: /sources/gnash/gnash/server/as_value.cpp,v
retrieving revision 1.100
retrieving revision 1.101
diff -u -b -r1.100 -r1.101
--- server/as_value.cpp 30 Nov 2007 19:01:03 -0000 1.100
+++ server/as_value.cpp 30 Nov 2007 19:12:49 -0000 1.101
@@ -56,6 +56,7 @@
namespace {
+struct invalidHexDigit {};
uint8_t parseHex(char c)
{
switch (c)
@@ -76,6 +77,7 @@
case 'd': case 'D': return 13;
case 'e': case 'E': return 14;
case 'f': case 'F': return 15;
+ default: throw invalidHexDigit();
}
}
@@ -155,7 +157,7 @@
case OBJECT:
case AS_FUNCTION:
{
- as_object* obj = m_type == OBJECT ? getObj().get() :
getFun().get();
+ //as_object* obj = m_type == OBJECT ? getObj().get() :
getFun().get();
try
{
as_value ret = to_primitive(STRING);
@@ -378,10 +380,13 @@
{
if ( s.length() == 8 && s[0] == '0' && ( s[1] == 'x' || s[1] ==
'X' ) )
{
+ try {
uint8_t r = (parseHex(s[2])<<4) + parseHex(s[3]);
uint8_t g = (parseHex(s[4])<<4) + parseHex(s[5]);
uint8_t b = (parseHex(s[6])<<4) + parseHex(s[7]);
return (double)((r<<16)|(g<<8)|b);
+ } catch (invalidHexDigit) { }
+
}
}
@@ -434,7 +439,7 @@
//
// Arrays and Movieclips should return NaN.
- as_object* obj = m_type == OBJECT ? getObj().get() :
getFun().get();
+ //as_object* obj = m_type == OBJECT ? getObj().get() :
getFun().get();
try
{
as_value ret = to_primitive(NUMBER);
@@ -762,7 +767,7 @@
}
bool
-as_value::conforms_to(string_table::key name)
+as_value::conforms_to(string_table::key /*name*/)
{
// TODO: Implement
return false;
@@ -1472,7 +1477,7 @@
// as the SpriteProxy target (instead of
// the full string, to be parsed everytime)
- string::size_type size = tgtstr.size();
+ //string::size_type size = tgtstr.size();
string::size_type from = 0;
while ( string::size_type to=tgtstr.find_first_of('.', from) )
{
Index: testsuite/actionscript.all/Number.as
===================================================================
RCS file: /sources/gnash/gnash/testsuite/actionscript.all/Number.as,v
retrieving revision 1.35
retrieving revision 1.36
diff -u -b -r1.35 -r1.36
--- testsuite/actionscript.all/Number.as 30 Nov 2007 19:01:03 -0000
1.35
+++ testsuite/actionscript.all/Number.as 30 Nov 2007 19:12:50 -0000
1.36
@@ -27,7 +27,7 @@
// TODO: test with SWF target != 6 (the only one tested so far)
//
-rcsid="$Id: Number.as,v 1.35 2007/11/30 19:01:03 strk Exp $";
+rcsid="$Id: Number.as,v 1.36 2007/11/30 19:12:50 strk Exp $";
#include "check.as"
@@ -267,6 +267,8 @@
check("0XFF0000" != 0xFF0000);
#endif
+check(isNaN("0xff000z"));
+
check_equals(typeof(Number.prototype.valueOf), 'function');
check_equals(typeof(Number.prototype.toString), 'function');
#if OUTPUT_VERSION > 5
@@ -452,11 +454,11 @@
// END OF TEST
#if OUTPUT_VERSION < 6
- check_totals(146);
+ check_totals(147);
#else
#if OUTPUT_VERSION < 7
- check_totals(158);
+ check_totals(159);
#else
- check_totals(156);
+ check_totals(157);
#endif
#endif
[Prev in Thread] |
Current Thread |
[Next in Thread] |
- [Gnash-commit] gnash server/as_value.cpp testsuite/actionscrip...,
Sandro Santilli <=