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