gnash-commit
[Top][All Lists]
Advanced

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

[Gnash-commit] gnash ChangeLog server/character.cpp server/cha...


From: Sandro Santilli
Subject: [Gnash-commit] gnash ChangeLog server/character.cpp server/cha...
Date: Sun, 13 Aug 2006 12:19:16 +0000

CVSROOT:        /sources/gnash
Module name:    gnash
Changes by:     Sandro Santilli <strk>  06/08/13 12:19:16

Modified files:
        .              : ChangeLog 
        server         : character.cpp character.h 

Log message:
                * server/character.cpp, server/character.h:
                safely handle ActionScript code referencing '..'
                from the root character.

CVSWeb URLs:
http://cvs.savannah.gnu.org/viewcvs/gnash/ChangeLog?cvsroot=gnash&r1=1.629&r2=1.630
http://cvs.savannah.gnu.org/viewcvs/gnash/server/character.cpp?cvsroot=gnash&r1=1.3&r2=1.4
http://cvs.savannah.gnu.org/viewcvs/gnash/server/character.h?cvsroot=gnash&r1=1.11&r2=1.12

Patches:
Index: ChangeLog
===================================================================
RCS file: /sources/gnash/gnash/ChangeLog,v
retrieving revision 1.629
retrieving revision 1.630
diff -u -b -r1.629 -r1.630
--- ChangeLog   12 Aug 2006 22:24:53 -0000      1.629
+++ ChangeLog   13 Aug 2006 12:19:15 -0000      1.630
@@ -1,3 +1,9 @@
+2006-08-13  Sandro Santilli  <address@hidden>
+
+       * server/character.cpp, server/character.h:
+       safely handle ActionScript code referencing '..' 
+       from the root character.
+
 2006-08-12  Sandro Santilli  <address@hidden>
 
        * server/Makefile.am, server/thread.h: removed duplicated code

Index: server/character.cpp
===================================================================
RCS file: /sources/gnash/gnash/server/character.cpp,v
retrieving revision 1.3
retrieving revision 1.4
diff -u -b -r1.3 -r1.4
--- server/character.cpp        7 Jul 2006 01:01:11 -0000       1.3
+++ server/character.cpp        13 Aug 2006 12:19:15 -0000      1.4
@@ -150,8 +150,10 @@
        }
        else if (name == "..")
        {
-               // this is possibly NULL, it seems
-               return get_parent();
+               // Never NULL
+               character* parent = get_parent();
+               assert(parent);
+               return parent;
        }
        else if (name == "_level0"
             || name == "_root")

Index: server/character.h
===================================================================
RCS file: /sources/gnash/gnash/server/character.h,v
retrieving revision 1.11
retrieving revision 1.12
diff -u -b -r1.11 -r1.12
--- server/character.h  4 Aug 2006 15:30:36 -0000       1.11
+++ server/character.h  13 Aug 2006 12:19:16 -0000      1.12
@@ -114,7 +114,25 @@
 
     // Accessors for basic display info.
     int        get_id() const { return m_id; }
-    character* get_parent() const { return m_parent; }
+
+       /// \brief
+       /// Return the parent of this character, or 'this' if
+       /// the character has no parent.
+       character* get_parent() const
+       {
+               if ( m_parent )
+               {
+                       return m_parent;
+               }
+               else
+               {
+                       // AS code trying to access something before the root
+                       log_warning("ActionScript code trying to refrence"
+                               " before the root MovieClip");
+                       return this;
+               }
+       }
+
     // for extern movie
     void set_parent(character* parent) { m_parent = parent; }
     int        get_depth() const { return m_depth; }




reply via email to

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