[Top][All Lists]
[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