gnash-commit
[Top][All Lists]
Advanced

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

[Gnash-commit] /srv/bzr/gnash/trunk r11706: void creating synthetized ob


From: Sandro Santilli
Subject: [Gnash-commit] /srv/bzr/gnash/trunk r11706: void creating synthetized object from primitive types on ACTION_DELETE* (would be plain silly)
Date: Thu, 17 Dec 2009 00:02:02 +0100
User-agent: Bazaar (2.0.2)

------------------------------------------------------------
revno: 11706
committer: Sandro Santilli <address@hidden>
branch nick: trunk
timestamp: Thu 2009-12-17 00:02:02 +0100
message:
  void creating synthetized object from primitive types on ACTION_DELETE* 
(would be plain silly)
modified:
  libcore/vm/ASHandlers.cpp
=== modified file 'libcore/vm/ASHandlers.cpp'
--- a/libcore/vm/ASHandlers.cpp 2009-12-08 08:47:03 +0000
+++ b/libcore/vm/ASHandlers.cpp 2009-12-16 23:02:02 +0000
@@ -2332,13 +2332,25 @@
             // assume it's a variable and try to delete.
             env.top(1).set_bool(thread.delVariable(propertyname));
         }
-        else {
+        else
+        {
             as_value target = thread.getVariable(path);
-            obj = toObject(getGlobal(thread.env), target);
-            propertyname = var;
-        }
-    }
-    else obj = toObject(getGlobal(thread.env), env.top(1));
+
+            if ( target.is_object() ) // Don't syntetize one otherwise !!
+            {
+                obj = toObject(getGlobal(thread.env), target);
+
+                propertyname = var;
+            }
+        }
+    }
+    else
+    {
+        if ( env.top(1).is_object() ) // Don't syntetize one otherwise !!
+        {
+            obj = toObject(getGlobal(thread.env), env.top(1));
+        }
+    }
 
     if (!obj)
     {
@@ -2347,7 +2359,7 @@
                         env.top(1), env.top(0));
         );
         env.top(1).set_bool(false);
-        env.drop(1);
+        env.drop(1); 
         return;
     }
 
@@ -2380,19 +2392,20 @@
     
     // Otherwise see if it's an object and delete it.
     as_value target = thread.getVariable(path);
-    boost::intrusive_ptr<as_object> obj = toObject(getGlobal(thread.env), 
target);
+    if ( ! target.is_object() )
+    {
+        // Don't syntetize one !!
 
-    if (!obj)
-    {
         IF_VERBOSE_ASCODING_ERRORS(
             log_aserror(_("delete2 called with a path that does not resolve "
                     "to an object"), env.top(1), env.top(0));
         );
         env.top(1).set_bool(false);
-        env.drop(1);
+        env.drop(1); 
         return;
     }
 
+    as_object* obj = toObject(getGlobal(thread.env), target);
     env.top(1).set_bool(thread.delObjectMember(*obj, var));
 }
 


reply via email to

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