gnash-commit
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Gnash-commit] gnash ChangeLog server/asobj/Boolean.cpp


From: Bastiaan Jacques
Subject: [Gnash-commit] gnash ChangeLog server/asobj/Boolean.cpp
Date: Mon, 12 Mar 2007 11:42:57 +0000

CVSROOT:        /sources/gnash
Module name:    gnash
Changes by:     Bastiaan Jacques <bjacques>     07/03/12 11:42:57

Modified files:
        .              : ChangeLog 
        server/asobj   : Boolean.cpp 

Log message:
        Add ensureBoolean to guard casts.

CVSWeb URLs:
http://cvs.savannah.gnu.org/viewcvs/gnash/ChangeLog?cvsroot=gnash&r1=1.2609&r2=1.2610
http://cvs.savannah.gnu.org/viewcvs/gnash/server/asobj/Boolean.cpp?cvsroot=gnash&r1=1.6&r2=1.7

Patches:
Index: ChangeLog
===================================================================
RCS file: /sources/gnash/gnash/ChangeLog,v
retrieving revision 1.2609
retrieving revision 1.2610
diff -u -b -r1.2609 -r1.2610
--- ChangeLog   12 Mar 2007 10:57:17 -0000      1.2609
+++ ChangeLog   12 Mar 2007 11:42:56 -0000      1.2610
@@ -1,3 +1,8 @@
+2007-03-12 Bastiaan Jacques <address@hidden>
+
+       * server/asobj/Boolean.cpp: Add ensureBoolean() to guard
+       casts.
+
 2007-03-12 Sandro Santilli <address@hidden>
  
        * testsuite/actionscript.all/Global.as: argh, it

Index: server/asobj/Boolean.cpp
===================================================================
RCS file: /sources/gnash/gnash/server/asobj/Boolean.cpp,v
retrieving revision 1.6
retrieving revision 1.7
diff -u -b -r1.6 -r1.7
--- server/asobj/Boolean.cpp    4 Mar 2007 01:39:01 -0000       1.6
+++ server/asobj/Boolean.cpp    12 Mar 2007 11:42:56 -0000      1.7
@@ -26,6 +26,7 @@
 #include "fn_call.h"
 #include "smart_ptr.h" // for boost intrusive_ptr
 #include "builtin_function.h" // need builtin_function
+#include "GnashException.h"
 
 namespace gnash {
 
@@ -79,20 +80,34 @@
        
 };
 
+static boolean_as_object *
+ensureBoolean(as_object* obj)
+{
+        boolean_as_object* ret = dynamic_cast<boolean_as_object*>(obj);
+        if ( ! ret )
+        {
+                throw ActionException("builtin method or gettersetter for " \
+                                     " Boolean objects called against " \
+                                     " non-Boolean instance");
+        }
+        return ret;
+}
+
 void boolean_tostring(const fn_call& fn) {
 
        static char* strtrue = "true";
        static char* strfalse = "false";
 
-       boolean_as_object* boolobj = (boolean_as_object*) (as_object*) 
fn.this_ptr;
+       boolean_as_object* boolobj = ensureBoolean(fn.this_ptr);
        
        if (boolobj->val) 
                fn.result->set_string(strtrue);
        else
                fn.result->set_string(strfalse);
 }
+
 void boolean_valueof(const fn_call& fn) {
-    boolean_as_object* boolobj = (boolean_as_object*) (as_object*) fn.this_ptr;
+    boolean_as_object* boolobj = ensureBoolean(fn.this_ptr);
     
     fn.result->set_bool(boolobj->val);
 }




reply via email to

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