gnash-commit
[Top][All Lists]
Advanced

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

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


From: Chad Musick
Subject: [Gnash-commit] gnash ChangeLog server/as_value.cpp
Date: Wed, 12 Sep 2007 06:44:22 +0000

CVSROOT:        /sources/gnash
Module name:    gnash
Changes by:     Chad Musick <cmusick>   07/09/12 06:44:22

Modified files:
        .              : ChangeLog 
        server         : as_value.cpp 

Log message:
        Protect us against exceptions gone wild.

CVSWeb URLs:
http://cvs.savannah.gnu.org/viewcvs/gnash/ChangeLog?cvsroot=gnash&r1=1.4279&r2=1.4280
http://cvs.savannah.gnu.org/viewcvs/gnash/server/as_value.cpp?cvsroot=gnash&r1=1.71&r2=1.72

Patches:
Index: ChangeLog
===================================================================
RCS file: /sources/gnash/gnash/ChangeLog,v
retrieving revision 1.4279
retrieving revision 1.4280
diff -u -b -r1.4279 -r1.4280
--- ChangeLog   12 Sep 2007 06:02:13 -0000      1.4279
+++ ChangeLog   12 Sep 2007 06:44:22 -0000      1.4280
@@ -1,3 +1,10 @@
+2007-09-12 Chad Musick <address@hidden>
+
+       * server/as_value.cpp: Make sure that exceptions don't
+         cause asserts, even if they escape into the wild.
+         (This escape is an error, but perhaps it should not
+         be fatal.)
+
 2007-09-12 Sandro Santilli <address@hidden>
 
        * server/vm/ActionExec.cpp: cleanup variables initialization

Index: server/as_value.cpp
===================================================================
RCS file: /sources/gnash/gnash/server/as_value.cpp,v
retrieving revision 1.71
retrieving revision 1.72
diff -u -b -r1.71 -r1.72
--- server/as_value.cpp 11 Sep 2007 22:03:05 -0000      1.71
+++ server/as_value.cpp 12 Sep 2007 06:44:22 -0000      1.72
@@ -173,8 +173,8 @@
                }
 
                default:
-                       m_string_value = "<bad type> "+m_type;
-                       assert(0);
+                       m_string_value = "[exception]";
+                       break;
     }
     
     return m_string_value;
@@ -378,7 +378,8 @@
                case MOVIECLIP:
                        return true;
                default:
-                       assert(m_type == UNDEFINED || m_type == NULLTYPE);
+                       assert(m_type == UNDEFINED || m_type == NULLTYPE ||
+                               is_exception());
                        return false;
        }
 }
@@ -412,7 +413,8 @@
                case MOVIECLIP:
                        return true;
                default:
-                       assert(m_type == UNDEFINED || m_type == NULLTYPE);
+                       assert(m_type == UNDEFINED || m_type == NULLTYPE ||
+                               is_exception());
                        return false;
        }
 }
@@ -446,7 +448,8 @@
                case MOVIECLIP:
                        return true;
                default:
-                       assert(m_type == UNDEFINED || m_type == NULLTYPE);
+                       assert(m_type == UNDEFINED || m_type == NULLTYPE ||
+                               is_exception());
                        return false;
        }
 }
@@ -488,6 +491,7 @@
                        return init_boolean_instance(m_boolean_value);
 
                default:
+                       // Invalid to convert exceptions.
                        return NULL;
        }
 }
@@ -825,6 +829,8 @@
                        return "function";
 
                default:
+                       if (is_exception())
+                               return "exception";
                        assert(0);
                        return NULL;
        }
@@ -879,6 +885,8 @@
                }
 
        }
+       if (is_exception())
+               return false; // Exceptions equal nothing.
        assert(0);
        return false;
 }
@@ -927,6 +935,8 @@
                        return buf;
                }
                default:
+                       if (is_exception())
+                               return "[exception]";
                        assert(0);
                        return NULL;
        }
@@ -1138,9 +1148,11 @@
 {
 #ifdef GNASH_USE_GC
 #ifdef MOVIECLIP_AS_SOFTREF
-       if ( m_type == OBJECT || m_type == AS_FUNCTION )
+       if ( m_type == OBJECT || m_type == AS_FUNCTION ||
+               m_type == OBJECT_EXCEPT)
 #else
-       if ( m_type == OBJECT || m_type == AS_FUNCTION || m_type == MOVIECLIP)
+       if ( m_type == OBJECT || m_type == AS_FUNCTION || m_type == MOVIECLIP
+               || m_type == OBJECT_EXCEPT)
 #endif
        {
                m_object_value->setReachable();




reply via email to

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