gnash-commit
[Top][All Lists]
Advanced

[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




reply via email to

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