gnash-commit
[Top][All Lists]
Advanced

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

[Gnash-commit] gnash ChangeLog server/array.cpp testsuite/acti...


From: Sandro Santilli
Subject: [Gnash-commit] gnash ChangeLog server/array.cpp testsuite/acti...
Date: Fri, 31 Aug 2007 17:07:36 +0000

CVSROOT:        /sources/gnash
Module name:    gnash
Changes by:     Sandro Santilli <strk>  07/08/31 17:07:36

Modified files:
        .              : ChangeLog 
        server         : array.cpp 
        testsuite/actionscript.all: array.as 

Log message:
                * server/array.cpp (array_length): handle attempts to set a 
negative
                  length as if length=0 was set, and log an AS error.
                  Still not correct, but saves a memory fill with swfdec 
testsuite.
                * testsuite/actionscript.all/array.as: add test for setting a 
negative
                  length.

CVSWeb URLs:
http://cvs.savannah.gnu.org/viewcvs/gnash/ChangeLog?cvsroot=gnash&r1=1.4175&r2=1.4176
http://cvs.savannah.gnu.org/viewcvs/gnash/server/array.cpp?cvsroot=gnash&r1=1.73&r2=1.74
http://cvs.savannah.gnu.org/viewcvs/gnash/testsuite/actionscript.all/array.as?cvsroot=gnash&r1=1.30&r2=1.31

Patches:
Index: ChangeLog
===================================================================
RCS file: /sources/gnash/gnash/ChangeLog,v
retrieving revision 1.4175
retrieving revision 1.4176
diff -u -b -r1.4175 -r1.4176
--- ChangeLog   31 Aug 2007 15:40:04 -0000      1.4175
+++ ChangeLog   31 Aug 2007 17:07:35 -0000      1.4176
@@ -1,5 +1,13 @@
 2007-08-31 Sandro Santilli <address@hidden>
 
+       * server/array.cpp (array_length): handle attempts to set a negative
+         length as if length=0 was set, and log an AS error.
+         Still not correct, but saves a memory fill with swfdec testsuite.
+       * testsuite/actionscript.all/array.as: add test for setting a negative
+         length.
+
+2007-08-31 Sandro Santilli <address@hidden>
+
        * server/character.cpp (unload): assert the character wasn't already
          unloaded.
        * macros/boost.m4: don't trash user-defined CXXFLAGS, and don't

Index: server/array.cpp
===================================================================
RCS file: /sources/gnash/gnash/server/array.cpp,v
retrieving revision 1.73
retrieving revision 1.74
diff -u -b -r1.73 -r1.74
--- server/array.cpp    14 Aug 2007 06:07:03 -0000      1.73
+++ server/array.cpp    31 Aug 2007 17:07:36 -0000      1.74
@@ -1316,7 +1316,16 @@
 
        if ( fn.nargs ) // setter
        {
-               array->resize(unsigned(fn.arg(0).to_number(&(fn.env()))));
+               int length = fn.arg(0).to_int(fn.env());
+               if ( length < 0 ) // TODO: set a max limit too ?
+               {
+                       IF_VERBOSE_ASCODING_ERRORS(
+                       log_aserror("Attempt to set Array.length to a negative 
value %d", length);
+                       )
+                       length = 0;
+               }
+
+               array->resize(length);
                return as_value();
        }
        else // getter

Index: testsuite/actionscript.all/array.as
===================================================================
RCS file: /sources/gnash/gnash/testsuite/actionscript.all/array.as,v
retrieving revision 1.30
retrieving revision 1.31
diff -u -b -r1.30 -r1.31
--- testsuite/actionscript.all/array.as 4 Aug 2007 21:34:14 -0000       1.30
+++ testsuite/actionscript.all/array.as 31 Aug 2007 17:07:36 -0000      1.31
@@ -5,7 +5,7 @@
 // Updated with sort functions, and to use check() macro
 // by Mike Carlson Feb. 14th, 2006
 
-rcsid="$Id: array.as,v 1.30 2007/08/04 21:34:14 strk Exp $";
+rcsid="$Id: array.as,v 1.31 2007/08/31 17:07:36 strk Exp $";
 
 #include "check.as"
 
@@ -362,10 +362,16 @@
 
 // Test that the 'length' property is overridable
 c[8] = 'eight';
+c[0] = 'zero';
 check_equals(c[8], 'eight');
 c.length = 2;
 check_equals(c.length, 2);
 check_equals(c[8], undefined);
+check_equals(c[0], 'zero');
+c.length = -1;
+// it seems Gnash needs to store the 'length' property as a normal property
+xcheck_equals(c.length, -1);
+check_equals(c[0], undefined);
 
 //-------------------------------
 // Test deleting an array element




reply via email to

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