[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Gnash-commit] gnash ChangeLog server/vm/ASHandlers.cpp
From: |
Sandro Santilli |
Subject: |
[Gnash-commit] gnash ChangeLog server/vm/ASHandlers.cpp |
Date: |
Wed, 20 Feb 2008 17:00:44 +0000 |
CVSROOT: /sources/gnash
Module name: gnash
Changes by: Sandro Santilli <strk> 08/02/20 17:00:43
Modified files:
. : ChangeLog
server/vm : ASHandlers.cpp
Log message:
(ActionImplementsOp): better logging, catch bogus opcodes.
CVSWeb URLs:
http://cvs.savannah.gnu.org/viewcvs/gnash/ChangeLog?cvsroot=gnash&r1=1.5707&r2=1.5708
http://cvs.savannah.gnu.org/viewcvs/gnash/server/vm/ASHandlers.cpp?cvsroot=gnash&r1=1.197&r2=1.198
Patches:
Index: ChangeLog
===================================================================
RCS file: /sources/gnash/gnash/ChangeLog,v
retrieving revision 1.5707
retrieving revision 1.5708
diff -u -b -r1.5707 -r1.5708
--- ChangeLog 20 Feb 2008 15:59:43 -0000 1.5707
+++ ChangeLog 20 Feb 2008 17:00:41 -0000 1.5708
@@ -1,5 +1,7 @@
2008-02-20 Sandro Santilli <address@hidden>
+ * server/vm/ASHandlers.cpp (ActionImplementsOp): better logging,
+ catch bogus opcodes.
* server/vm/ASHandlers.cpp (CommonGetUrl): only loadVariables if
targetLoad flag is set (tested). Log an SWF error if loadVariables
is set but targtLoad is clear.
Index: server/vm/ASHandlers.cpp
===================================================================
RCS file: /sources/gnash/gnash/server/vm/ASHandlers.cpp,v
retrieving revision 1.197
retrieving revision 1.198
diff -u -b -r1.197 -r1.198
--- server/vm/ASHandlers.cpp 20 Feb 2008 15:59:44 -0000 1.197
+++ server/vm/ASHandlers.cpp 20 Feb 2008 17:00:43 -0000 1.198
@@ -17,7 +17,7 @@
// Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
//
-/* $Id: ASHandlers.cpp,v 1.197 2008/02/20 15:59:44 strk Exp $ */
+/* $Id: ASHandlers.cpp,v 1.198 2008/02/20 17:00:43 strk Exp $ */
#ifdef HAVE_CONFIG_H
#include "gnashconfig.h"
@@ -1420,19 +1420,33 @@
thread.ensureStack(2);
- as_object *obj = env.pop().to_object().get();
+ as_value objval = env.pop();
+ as_object *obj = objval.to_object().get();
int count = static_cast<int>(env.pop().to_number());
as_value a(1);
if (!obj)
{
- log_debug(_("In ImplementsOp, not an object.\n"));
+ IF_VERBOSE_ASCODING_ERRORS(
+ log_aserror(_("Stack value on IMPLEMENTSOP is not an object:
%s."),
+ objval.to_debug_string().c_str());
+ );
return;
}
obj = obj->get_prototype().get();
if (!obj)
{
- log_debug(_("In ImplementsOp, object had no prototype.\n"));
+ IF_VERBOSE_ASCODING_ERRORS(
+ log_aserror(_("Target object for IMPLEMENTSOP has no
prototype."));
+ );
+ return;
+ }
+
+ if ( count <= 0 )
+ {
+ IF_VERBOSE_ASCODING_ERRORS(
+ log_aserror(_("Invalid interfaces count (%d) on IMPLEMENTSOP"),
count);
+ );
return;
}