[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Gnash-commit] gnash ChangeLog server/vm/ASHandlers.cpp testsu...
From: |
Sandro Santilli |
Subject: |
[Gnash-commit] gnash ChangeLog server/vm/ASHandlers.cpp testsu... |
Date: |
Wed, 21 Mar 2007 16:20:58 +0000 |
CVSROOT: /sources/gnash
Module name: gnash
Changes by: Sandro Santilli <strk> 07/03/21 16:20:57
Modified files:
. : ChangeLog
server/vm : ASHandlers.cpp
testsuite/actionscript.all: String.as
Log message:
* server/vm/ASHandlers.cpp (ActionSubString): when length
argument
is negative take it as full string length.
* testsuite/actionscript.all/String.as: add tests for
'substring'
action with negative length parameter.
CVSWeb URLs:
http://cvs.savannah.gnu.org/viewcvs/gnash/ChangeLog?cvsroot=gnash&r1=1.2662&r2=1.2663
http://cvs.savannah.gnu.org/viewcvs/gnash/server/vm/ASHandlers.cpp?cvsroot=gnash&r1=1.70&r2=1.71
http://cvs.savannah.gnu.org/viewcvs/gnash/testsuite/actionscript.all/String.as?cvsroot=gnash&r1=1.14&r2=1.15
Patches:
Index: ChangeLog
===================================================================
RCS file: /sources/gnash/gnash/ChangeLog,v
retrieving revision 1.2662
retrieving revision 1.2663
diff -u -b -r1.2662 -r1.2663
--- ChangeLog 21 Mar 2007 14:37:20 -0000 1.2662
+++ ChangeLog 21 Mar 2007 16:20:57 -0000 1.2663
@@ -1,5 +1,12 @@
2007-03-21 Sandro Santilli <address@hidden>
+ * server/vm/ASHandlers.cpp (ActionSubString): when length argument
+ is negative take it as full string length.
+ * testsuite/actionscript.all/String.as: add tests for 'substring'
+ action with negative length parameter.
+
+2007-03-21 Sandro Santilli <address@hidden>
+
* server/as_function.cpp (extends): when VM version is > 5
set 'prototype.__constructor__' in addition to
'prototype.constructor'
Index: server/vm/ASHandlers.cpp
===================================================================
RCS file: /sources/gnash/gnash/server/vm/ASHandlers.cpp,v
retrieving revision 1.70
retrieving revision 1.71
diff -u -b -r1.70 -r1.71
--- server/vm/ASHandlers.cpp 21 Mar 2007 09:51:20 -0000 1.70
+++ server/vm/ASHandlers.cpp 21 Mar 2007 16:20:57 -0000 1.71
@@ -14,7 +14,7 @@
// along with this program; if not, write to the Free Software
// Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
-/* $Id: ASHandlers.cpp,v 1.70 2007/03/21 09:51:20 strk Exp $ */
+/* $Id: ASHandlers.cpp,v 1.71 2007/03/21 16:20:57 strk Exp $ */
#ifdef HAVE_CONFIG_H
#include "config.h"
@@ -823,7 +823,7 @@
void
SWFHandlers::ActionSubString(ActionExec& thread)
{
-// GNASH_REPORT_FUNCTION;
+ //GNASH_REPORT_FUNCTION;
as_environment& env = thread.env;
thread.ensureStack(3); // size, base, string
@@ -841,20 +841,19 @@
return;
}
- int size = int(size_val.to_number());
- if ( size < 0 )
- {
- log_warning("Negative size passed to ActionSubString, "
- "returning undefined");
- env.drop(2);
- env.top(0).set_undefined();
- return;
- }
+ int size = unsigned(size_val.to_number());
int base = int(base_val.to_number());
int version = env.get_version();
const tu_string& str = string_val.to_tu_string_versioned(version);
+ if ( size < 0 )
+ {
+ log_warning("Negative size passed to ActionSubString, "
+ "taking as whole length");
+ size = str.length();
+ }
+
// TODO: if 'base' or 'size' do not evaluate to numbers return
// the empty string (how do we check if they evaluate ??)
@@ -2408,7 +2407,7 @@
void
SWFHandlers::ActionNewEquals(ActionExec& thread)
{
-// GNASH_REPORT_FUNCTION;
+ //GNASH_REPORT_FUNCTION;
as_environment& env = thread.env;
assert(thread.code[thread.pc] == SWF::ACTION_NEWEQUALS);
Index: testsuite/actionscript.all/String.as
===================================================================
RCS file: /sources/gnash/gnash/testsuite/actionscript.all/String.as,v
retrieving revision 1.14
retrieving revision 1.15
diff -u -b -r1.14 -r1.15
--- testsuite/actionscript.all/String.as 15 Mar 2007 22:39:54 -0000
1.14
+++ testsuite/actionscript.all/String.as 21 Mar 2007 16:20:57 -0000
1.15
@@ -16,7 +16,7 @@
// Original author: Mike Carlson - June 19th, 2006
-rcsid="$Id: String.as,v 1.14 2007/03/15 22:39:54 strk Exp $";
+rcsid="$Id: String.as,v 1.15 2007/03/21 16:20:57 strk Exp $";
#include "check.as"
@@ -107,6 +107,16 @@
check_equals( b, "iao");
asm {
push "b"
+ push "boowa"
+ push "2"
+ push "-1" // size is bigger then string length,
+ // we expect the interpreter to adjust it
+ substring
+ setvariable
+};
+check_equals( b, "oowa");
+asm {
+ push "b"
push "ciao"
push "-2" // negative base should be interpreted as 1
push "1"
@@ -117,6 +127,15 @@
asm {
push "b"
push "ciao"
+ push "-2" // negative base should be interpreted as 1
+ push "10" // long size reduced
+ substring
+ setvariable
+};
+check_equals( b, "ciao");
+asm {
+ push "b"
+ push "ciao"
push "0" // zero base is invalid, but taken as 1
push "1"
substring