gnash-commit
[Top][All Lists]
Advanced

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

[Gnash-commit] gnash ChangeLog server/sprite_instance.cpp


From: Sandro Santilli
Subject: [Gnash-commit] gnash ChangeLog server/sprite_instance.cpp
Date: Mon, 06 Nov 2006 19:23:31 +0000

CVSROOT:        /sources/gnash
Module name:    gnash
Changes by:     Sandro Santilli <strk>  06/11/06 19:23:31

Modified files:
        .              : ChangeLog 
        server         : sprite_instance.cpp 

Log message:
                * server/sprite_instance.cpp (sprite_create_text_field):
                  don't abort on "invalid?" calls. Warn if requested.

CVSWeb URLs:
http://cvs.savannah.gnu.org/viewcvs/gnash/ChangeLog?cvsroot=gnash&r1=1.1540&r2=1.1541
http://cvs.savannah.gnu.org/viewcvs/gnash/server/sprite_instance.cpp?cvsroot=gnash&r1=1.74&r2=1.75

Patches:
Index: ChangeLog
===================================================================
RCS file: /sources/gnash/gnash/ChangeLog,v
retrieving revision 1.1540
retrieving revision 1.1541
diff -u -b -r1.1540 -r1.1541
--- ChangeLog   6 Nov 2006 16:42:00 -0000       1.1540
+++ ChangeLog   6 Nov 2006 19:23:31 -0000       1.1541
@@ -1,5 +1,7 @@
 2006-11-06 Sandro Santilli <address@hidden>
 
+       * server/sprite_instance.cpp (sprite_create_text_field):
+         don't abort on "invalid?" calls. Warn if requested.
        * testsuite/actionscript.all/Function.as: fixed test for
          SWF >= version 7.
        * server/as_function.cpp (function_apply): don't abort

Index: server/sprite_instance.cpp
===================================================================
RCS file: /sources/gnash/gnash/server/sprite_instance.cpp,v
retrieving revision 1.74
retrieving revision 1.75
diff -u -b -r1.74 -r1.75
--- server/sprite_instance.cpp  5 Nov 2006 15:12:57 -0000       1.74
+++ server/sprite_instance.cpp  6 Nov 2006 19:23:31 -0000       1.75
@@ -546,24 +546,83 @@
        sprite_instance* sprite = dynamic_cast<sprite_instance*>(target);
        assert(sprite);
 
-       assert(fn.nargs==6); // name, depth, x, y, width, height
+       if (fn.nargs != 6) // name, depth, x, y, width, height
+       {
+               IF_VERBOSE_ASCODING_ERRORS(
+               log_msg("createTextField called with %d args, "
+                       "expected 6 - returning undefined", fn.nargs);
+               );
+               fn.result->set_undefined();
+               return;
+       }
 
-       assert(fn.arg(0).get_type()==as_value::STRING);
+       if ( fn.arg(0).get_type() != as_value::STRING )
+       {
+               IF_VERBOSE_ASCODING_ERRORS(
+               log_msg("First argument of createTextField is not a string"
+                       " - returning undefined");
+               );
+               fn.result->set_undefined();
+               return;
+       }
        //std::string txt_name = fn.arg(0).to_string();
 
-       assert(fn.arg(1).get_type()==as_value::NUMBER);
+       if ( fn.arg(1).get_type() != as_value::NUMBER)
+       {
+               IF_VERBOSE_ASCODING_ERRORS(
+               log_msg("Second argument of createTextField is not a number"
+                       " - returning undefined");
+               );
+               fn.result->set_undefined();
+               return;
+       }
+
        //double txt_depth = fn.arg(1).to_number();
 
-       assert(fn.arg(2).get_type()==as_value::NUMBER);
+       if ( fn.arg(2).get_type() != as_value::NUMBER)
+       {
+               IF_VERBOSE_ASCODING_ERRORS(
+               log_msg("Third argument of createTextField is not a number"
+                       " - returning undefined");
+               );
+               fn.result->set_undefined();
+               return;
+       }
+
        //double txt_x = fn.arg(2).to_number();
 
-       assert(fn.arg(3).get_type()==as_value::NUMBER);
+       if ( fn.arg(3).get_type() != as_value::NUMBER)
+       {
+               IF_VERBOSE_ASCODING_ERRORS(
+               log_msg("Fourth argument of createTextField is not a number"
+                       " - returning undefined");
+               );
+               fn.result->set_undefined();
+               return;
+       }
+
        //double txt_y = fn.arg(3).to_number();
 
-       assert(fn.arg(4).get_type()==as_value::NUMBER);
+       if ( fn.arg(4).get_type() != as_value::NUMBER )
+       {
+               IF_VERBOSE_ASCODING_ERRORS(
+               log_msg("Fifth argument of createTextField is not a number"
+                       " - returning undefined");
+               );
+               fn.result->set_undefined();
+               return;
+       }
        //double txt_width = fn.arg(4).to_number();
 
-       assert(fn.arg(5).get_type()==as_value::NUMBER);
+       if (fn.arg(5).get_type() != as_value::NUMBER)
+       {
+               IF_VERBOSE_ASCODING_ERRORS(
+               log_msg("Fifth argument of createTextField is not a number"
+                       " - returning undefined");
+               );
+               fn.result->set_undefined();
+               return;
+       }
        //double txt_height = fn.arg(5).to_number();
 
 
@@ -575,7 +634,7 @@
        // Get target's movie definition
        movie_definition *mds = sprite->get_movie_definition();
 
-       log_msg("Target's movie definition at %p\n", (void*)mds);
+       //log_msg("Target's movie definition at %p\n", (void*)mds);
 
        // Do I need the smart_ptr here ?
        smart_ptr<text_character_def> txt = new text_character_def(mds);




reply via email to

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