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


From: Sandro Santilli
Subject: [Gnash-commit] gnash ChangeLog server/array.cpp
Date: Sat, 29 Mar 2008 21:41:58 +0000

CVSROOT:        /sources/gnash
Module name:    gnash
Changes by:     Sandro Santilli <strk>  08/03/29 21:41:58

Modified files:
        .              : ChangeLog 
        server         : array.cpp 

Log message:
        don't assume array multiprop comparator container is nonempty,
        add assertion checking in get_basic_cmp to ensure caller took care of
        stripping the fUniqueSort and fReturnIndexArray flags.
        
        This fixes some crashes triggered by swfdec testsuite

CVSWeb URLs:
http://cvs.savannah.gnu.org/viewcvs/gnash/ChangeLog?cvsroot=gnash&r1=1.6082&r2=1.6083
http://cvs.savannah.gnu.org/viewcvs/gnash/server/array.cpp?cvsroot=gnash&r1=1.101&r2=1.102

Patches:
Index: ChangeLog
===================================================================
RCS file: /sources/gnash/gnash/ChangeLog,v
retrieving revision 1.6082
retrieving revision 1.6083
diff -u -b -r1.6082 -r1.6083
--- ChangeLog   29 Mar 2008 21:09:49 -0000      1.6082
+++ ChangeLog   29 Mar 2008 21:41:58 -0000      1.6083
@@ -1,5 +1,11 @@
 2008-03-29 Sandro Santilli <address@hidden>
 
+       * server/array.cpp: don't assume multiprop comparator container is
+         nonempty, add assertion checking in get_basic_cmp to ensure caller
+         took care of stripping the fUniqueSort and fReturnIndexArray flags.
+
+2008-03-29 Sandro Santilli <address@hidden>
+
        * testsuite/swfdec/: gen_run_swfdec_testsuite.sh, swfdec_gnash_tester:
          always take gnash crashes as real failures, expect it or not
          (yes, we have some crashes there..).

Index: server/array.cpp
===================================================================
RCS file: /sources/gnash/gnash/server/array.cpp,v
retrieving revision 1.101
retrieving revision 1.102
diff -u -b -r1.101 -r1.102
--- server/array.cpp    21 Mar 2008 17:39:09 -0000      1.101
+++ server/array.cpp    29 Mar 2008 21:41:58 -0000      1.102
@@ -262,6 +262,10 @@
 {
        as_cmp_fn f;
 
+       // fUniqueSort and fReturnIndexedArray must be stripped by caller
+       assert(flags^as_array_object::fUniqueSort);
+       assert(flags^as_array_object::fReturnIndexedArray);
+
        switch ( flags )
        {
                case 0: // default string comparison
@@ -301,7 +305,7 @@
                        return f;
 
                default:
-                       log_error(_("Unhandled sort flags: %d (0x%X)"), flags, 
flags);
+                       log_unimpl(_("Unhandled sort flags: %d (0x%X)"), 
(int)flags, (int)flags);
                        f = as_value_lt(env);
                        return f;
        }
@@ -433,6 +437,8 @@
 
        bool operator() (const as_value& a, const as_value& b)
        {
+               if ( _cmps.empty() ) return false;
+
                std::deque<as_cmp_fn>::iterator cmp = _cmps.begin();
                Props::iterator pit;
 
@@ -469,6 +475,8 @@
 
        bool operator() (const as_value& a, const as_value& b)
        {
+               if ( _cmps.empty() ) return false;
+
                Comps::iterator cmp = _cmps.begin();
                Props::iterator pit;
 
@@ -1122,7 +1130,7 @@
                {
                        boost::uint8_t flags = 
                                
static_cast<boost::uint8_t>(fn.arg(1).to_number());
-                       flag_preprocess(flags, &do_unique, &do_index);
+                       flags = flag_preprocess(flags, &do_unique, &do_index);
                        as_cmp_fn c = get_basic_cmp(flags, env);
 
                        cmp.assign(optnum, c);




reply via email to

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