gnash-commit
[Top][All Lists]
Advanced

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

[Gnash-commit] [SCM] Gnash branch, master, updated. release_0_8_9_final-


From: Benjamin Wolsey
Subject: [Gnash-commit] [SCM] Gnash branch, master, updated. release_0_8_9_final-261-g7274343
Date: Thu, 14 Apr 2011 06:53:34 +0000

This is an automated email from the git hooks/post-receive script. It was
generated because a ref change was pushed to the repository containing
the project "Gnash".

The branch, master has been updated
       via  72743434f9a593c7c0295b4c52ed624db2a8052a (commit)
       via  7d2d74e14031ca26dff087b5409e7fc262991cd8 (commit)
      from  bf6a9da94b9e25741625747bda84229f6e3fcaa1 (commit)

Those revisions listed above that are new to this repository have
not appeared on any other notification email; so we list those
revisions in full, below.

- Log -----------------------------------------------------------------
http://git.savannah.gnu.org/cgit//commit/?id=72743434f9a593c7c0295b4c52ed624db2a8052a


commit 72743434f9a593c7c0295b4c52ed624db2a8052a
Author: Benjamin Wolsey <address@hidden>
Date:   Thu Apr 14 08:38:34 2011 +0200

    Fix object-resolve for version 6 as well.

diff --git a/libcore/as_object.cpp b/libcore/as_object.cpp
index 4d652d4..92b114c 100644
--- a/libcore/as_object.cpp
+++ b/libcore/as_object.cpp
@@ -410,7 +410,7 @@ as_object::get_member(const ObjectURI& uri, as_value* val)
             if (res) {
                 resolve = res->isGetterSetter() ? res->getCache() :
                                                   res->getValue(*this);
-                if (version < 6) break;
+                if (version < 7) break;
                 if (resolve.is_object()) break;
             }
             // Finished searching.
@@ -426,8 +426,7 @@ as_object::get_member(const ObjectURI& uri, as_value* val)
         args += undefinedName;
 
         // Invoke the __resolve property.
-        *val = invoke(resolve, as_environment(getVM(*this)),
-                this, args);
+        *val = invoke(resolve, as_environment(getVM(*this)), this, args);
 
         return true;
     }
diff --git a/testsuite/swfdec/PASSING b/testsuite/swfdec/PASSING
index 04e811a..fe8fe64 100644
--- a/testsuite/swfdec/PASSING
+++ b/testsuite/swfdec/PASSING
@@ -905,6 +905,7 @@ object-properties-6.swf:c34734222b0c6eef649ab3b92b1b830f
 object-properties-7.swf:71ebb1f47408d993409748dae8d32d5e
 object-properties-8.swf:992fafbfd6ae4927116892eb205aac0f
 object-resolve-5.swf:5ec01818d35026f5ec889416fbbf8320
+object-resolve-6.swf:d17bdb694f5c9df3fefdf611f137e704
 object-resolve-7.swf:c7646ca7ed10a6ea8d81f2f724a17457
 object-resolve-8.swf:4a26d8425effd110ee82ddc61903d91d
 object-resolve-propflags-5.swf:e62bfe8b6c63f9e88ef4f00ff71e000e

http://git.savannah.gnu.org/cgit//commit/?id=7d2d74e14031ca26dff087b5409e7fc262991cd8


commit 7d2d74e14031ca26dff087b5409e7fc262991cd8
Author: Benjamin Wolsey <address@hidden>
Date:   Thu Apr 14 08:28:32 2011 +0200

    Handle getter-setter and object __resolve.
    
    Fixes swfdec tests for SWF7 and 8.

diff --git a/libcore/as_object.cpp b/libcore/as_object.cpp
index 25f227e..4d652d4 100644
--- a/libcore/as_object.cpp
+++ b/libcore/as_object.cpp
@@ -402,14 +402,20 @@ as_object::get_member(const ObjectURI& uri, as_value* val)
     if (!prop) {
 
         PrototypeRecursor<Exists> pr(this, NSV::PROP_uuRESOLVE);
-        Property* res = pr.getProperty();
 
-        while (!res && pr()) {
-            res = pr.getProperty();
+        as_value resolve;
+
+        for (;;) {
+            Property* res = pr.getProperty();
+            if (res) {
+                resolve = res->isGetterSetter() ? res->getCache() :
+                                                  res->getValue(*this);
+                if (version < 6) break;
+                if (resolve.is_object()) break;
+            }
+            // Finished searching.
+            if (!pr()) return false;
         }
-        
-        // No __resolve
-        if (!res) return false;
 
         // If __resolve exists, call it with the name of the undefined
         // property.
@@ -420,7 +426,7 @@ as_object::get_member(const ObjectURI& uri, as_value* val)
         args += undefinedName;
 
         // Invoke the __resolve property.
-        *val = invoke(res->getValue(*this), as_environment(getVM(*this)),
+        *val = invoke(resolve, as_environment(getVM(*this)),
                 this, args);
 
         return true;
diff --git a/testsuite/swfdec/PASSING b/testsuite/swfdec/PASSING
index e08457a..04e811a 100644
--- a/testsuite/swfdec/PASSING
+++ b/testsuite/swfdec/PASSING
@@ -905,6 +905,8 @@ object-properties-6.swf:c34734222b0c6eef649ab3b92b1b830f
 object-properties-7.swf:71ebb1f47408d993409748dae8d32d5e
 object-properties-8.swf:992fafbfd6ae4927116892eb205aac0f
 object-resolve-5.swf:5ec01818d35026f5ec889416fbbf8320
+object-resolve-7.swf:c7646ca7ed10a6ea8d81f2f724a17457
+object-resolve-8.swf:4a26d8425effd110ee82ddc61903d91d
 object-resolve-propflags-5.swf:e62bfe8b6c63f9e88ef4f00ff71e000e
 object-resolve-propflags-6.swf:d66b51e3f2364a2ba81ed709b243cca8
 object-resolve-propflags-7.swf:79349b6a00865b1fdaadf0e474eddbfa

-----------------------------------------------------------------------

Summary of changes:
 libcore/as_object.cpp    |   21 +++++++++++++--------
 testsuite/swfdec/PASSING |    3 +++
 2 files changed, 16 insertions(+), 8 deletions(-)


hooks/post-receive
-- 
Gnash



reply via email to

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