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: Mon, 17 Mar 2008 20:34:34 +0000

CVSROOT:        /sources/gnash
Module name:    gnash
Changes by:     Sandro Santilli <strk>  08/03/17 20:34:33

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

Log message:
        (index_requested): don't turn a negative number >= -1 to a valid index 
!!

CVSWeb URLs:
http://cvs.savannah.gnu.org/viewcvs/gnash/ChangeLog?cvsroot=gnash&r1=1.5953&r2=1.5954
http://cvs.savannah.gnu.org/viewcvs/gnash/server/array.cpp?cvsroot=gnash&r1=1.94&r2=1.95
http://cvs.savannah.gnu.org/viewcvs/gnash/testsuite/actionscript.all/array.as?cvsroot=gnash&r1=1.44&r2=1.45

Patches:
Index: ChangeLog
===================================================================
RCS file: /sources/gnash/gnash/ChangeLog,v
retrieving revision 1.5953
retrieving revision 1.5954
diff -u -b -r1.5953 -r1.5954
--- ChangeLog   17 Mar 2008 18:38:11 -0000      1.5953
+++ ChangeLog   17 Mar 2008 20:34:32 -0000      1.5954
@@ -1,3 +1,10 @@
+2008-03-17 Sandro Santilli <address@hidden>
+
+       * server/array.cpp (index_requested): don't turn a negative number
+         >= -1 to a valid index !!
+       * testsuite/actionscript.all/array.as: add test for negative indexed
+         members.
+
 2008-03-17 Benjamin Wolsey <address@hidden>
 
        * gui/gtk.cpp, gui/gnash.cpp: make clear that media handler

Index: server/array.cpp
===================================================================
RCS file: /sources/gnash/gnash/server/array.cpp,v
retrieving revision 1.94
retrieving revision 1.95
diff -u -b -r1.94 -r1.95
--- server/array.cpp    6 Mar 2008 20:29:09 -0000       1.94
+++ server/array.cpp    17 Mar 2008 20:34:33 -0000      1.95
@@ -589,14 +589,9 @@
        double value = temp.to_number();
 
        // if we were sent a string that can't convert like "asdf", it returns 
as NaN. -1 means invalid index
-       if (isnan(value)) return -1;
+       if (!isfinite(value)) return -1;
 
-       // TODO / WARNING: because to_number returns a double and we're
-       // converting to an int,
-       // I want to make sure we're above any "grey area" when we we round down
-       // by adding a little to the number before we round it.
-       // We don't want to accidentally look to index-1!
-       return int(value + 0.01);
+       return int(value);
 }
 
 void
@@ -958,7 +953,7 @@
        if ( fn.nargs == 0 )
        {
                array->sort(as_value_lt(env));
-               return as_value((boost::intrusive_ptr<as_object>)array);
+               return as_value(array.get());
        }
        else if ( fn.nargs == 1 && fn.arg(0).is_number() )
        {
@@ -982,7 +977,7 @@
                if ( (flags & as_array_object::fReturnIndexedArray) )
                        return as_value(array->sort_indexed(avc));
                array->sort(avc);
-               return as_value((boost::intrusive_ptr<as_object>)array);
+               return as_value(array.get());
                // note: custom AS function sorting apparently ignores the 
                // UniqueSort flag which is why it is also ignored here
        }
@@ -992,7 +987,7 @@
                log_aserror(_("Sort called with invalid arguments."));
                )
                if ( fn.arg(0).is_undefined() ) return as_value();
-               return as_value((boost::intrusive_ptr<as_object>)array);
+               return as_value(array.get());
        }
        bool do_unique, do_index;
        flags = flag_preprocess(flags, &do_unique, &do_index);
@@ -1007,7 +1002,7 @@
        }
        if (do_index) return as_value(array->sort_indexed(comp));
        array->sort(comp);
-       return as_value((boost::intrusive_ptr<as_object>)array);
+       return as_value(array.get());
 }
 
 static as_value
@@ -1046,7 +1041,7 @@
                if (do_index)
                        return as_value(array->sort_indexed(avc));
                array->sort(avc);
-               return as_value((boost::intrusive_ptr<as_object>)array);
+               return as_value(array.get());
        }
 
        // case: sortOn(["prop1", "prop2"] ...)
@@ -1138,7 +1133,7 @@
                if (do_index)
                        return as_value(array->sort_indexed(avc));
                array->sort(avc);
-               return as_value((boost::intrusive_ptr<as_object>)array);
+               return as_value(array.get());
 
        }
        IF_VERBOSE_ASCODING_ERRORS(
@@ -1147,7 +1142,7 @@
        if (fn.nargs == 0 )
                return as_value();
 
-       return as_value((boost::intrusive_ptr<as_object>)array);
+       return as_value(array.get());
 }
 
 // Callback to push values to the back of an array

Index: testsuite/actionscript.all/array.as
===================================================================
RCS file: /sources/gnash/gnash/testsuite/actionscript.all/array.as,v
retrieving revision 1.44
retrieving revision 1.45
diff -u -b -r1.44 -r1.45
--- testsuite/actionscript.all/array.as 11 Mar 2008 19:31:48 -0000      1.44
+++ testsuite/actionscript.all/array.as 17 Mar 2008 20:34:33 -0000      1.45
@@ -19,7 +19,7 @@
 // Initial test written by Mike Carlson
 
 
-rcsid="$Id: array.as,v 1.44 2008/03/11 19:31:48 strk Exp $";
+rcsid="$Id: array.as,v 1.45 2008/03/17 20:34:33 strk Exp $";
 #include "check.as"
 
 check_equals(typeof(Array), 'function');
@@ -1005,6 +1005,19 @@
 check_equals(out[1], 1);
 check_equals(out[0], 1);
 
+//-------------------------------
+// Test length property
+//-------------------------------
+
+a = new Array();
+check_equals(a.length, 0);
+a[-1] = 'minusone';
+check_equals(a.length, 0);
+check_equals(a[-1], 'minusone');
+a["Infinite"] = 'inf';
+check_equals(a.length, 0);
+check_equals(a["Infinite"], 'inf');
+
 
 // TODO: test ASnative-returned functions:
 //
@@ -1024,11 +1037,11 @@
 
 
 #if OUTPUT_VERSION < 6
- check_totals(366);
+ check_totals(371);
 #else
 # if OUTPUT_VERSION < 7
-  check_totals(394);
+  check_totals(399);
 # else
-  check_totals(401);
+  check_totals(406);
 # endif
 #endif




reply via email to

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