[Swfdec] 2 commits - libswfdec/swfdec_as_function.c test/trace

Benjamin Otte company at kemper.freedesktop.org
Thu Sep 13 11:46:02 PDT 2007


 libswfdec/swfdec_as_function.c                                      |    9 
 test/trace/Makefile.am                                              |  117 ++++++++++
 test/trace/scope-chain-did-you-understand-5.swf                     |binary
 test/trace/scope-chain-did-you-understand-5.swf.trace               |    1 
 test/trace/scope-chain-did-you-understand-6.swf                     |binary
 test/trace/scope-chain-did-you-understand-6.swf.trace               |    1 
 test/trace/scope-chain-did-you-understand-7.swf                     |binary
 test/trace/scope-chain-did-you-understand-7.swf.trace               |    1 
 test/trace/scope-chain-did-you-understand-8.swf                     |binary
 test/trace/scope-chain-did-you-understand-8.swf.trace               |    1 
 test/trace/scope-chain-did-you-understand.as                        |   23 +
 test/trace/scope-chain-function-and-5.swf                           |binary
 test/trace/scope-chain-function-and-5.swf.trace                     |    2 
 test/trace/scope-chain-function-and-6.swf                           |binary
 test/trace/scope-chain-function-and-6.swf.trace                     |    2 
 test/trace/scope-chain-function-and-7.swf                           |binary
 test/trace/scope-chain-function-and-7.swf.trace                     |    2 
 test/trace/scope-chain-function-and-8.swf                           |binary
 test/trace/scope-chain-function-and-8.swf.trace                     |    2 
 test/trace/scope-chain-function-and.as                              |   16 +
 test/trace/scope-chain-how-are-variables-assigned-2-5.swf           |binary
 test/trace/scope-chain-how-are-variables-assigned-2-5.swf.trace     |    4 
 test/trace/scope-chain-how-are-variables-assigned-2-6.swf           |binary
 test/trace/scope-chain-how-are-variables-assigned-2-6.swf.trace     |    4 
 test/trace/scope-chain-how-are-variables-assigned-2-7.swf           |binary
 test/trace/scope-chain-how-are-variables-assigned-2-7.swf.trace     |    4 
 test/trace/scope-chain-how-are-variables-assigned-2-8.swf           |binary
 test/trace/scope-chain-how-are-variables-assigned-2-8.swf.trace     |    4 
 test/trace/scope-chain-how-are-variables-assigned-2.as              |   16 +
 test/trace/scope-chain-how-are-variables-assigned-3-5.swf           |binary
 test/trace/scope-chain-how-are-variables-assigned-3-5.swf.trace     |    4 
 test/trace/scope-chain-how-are-variables-assigned-3-6.swf           |binary
 test/trace/scope-chain-how-are-variables-assigned-3-6.swf.trace     |    4 
 test/trace/scope-chain-how-are-variables-assigned-3-7.swf           |binary
 test/trace/scope-chain-how-are-variables-assigned-3-7.swf.trace     |    4 
 test/trace/scope-chain-how-are-variables-assigned-3-8.swf           |binary
 test/trace/scope-chain-how-are-variables-assigned-3-8.swf.trace     |    4 
 test/trace/scope-chain-how-are-variables-assigned-3.as              |   17 +
 test/trace/scope-chain-how-are-variables-assigned-5.swf             |binary
 test/trace/scope-chain-how-are-variables-assigned-5.swf.trace       |    4 
 test/trace/scope-chain-how-are-variables-assigned-6.swf             |binary
 test/trace/scope-chain-how-are-variables-assigned-6.swf.trace       |    4 
 test/trace/scope-chain-how-are-variables-assigned-7.swf             |binary
 test/trace/scope-chain-how-are-variables-assigned-7.swf.trace       |    4 
 test/trace/scope-chain-how-are-variables-assigned-8.swf             |binary
 test/trace/scope-chain-how-are-variables-assigned-8.swf.trace       |    4 
 test/trace/scope-chain-how-are-variables-assigned.as                |   16 +
 test/trace/scope-chain-just-how-deep-5.swf                          |binary
 test/trace/scope-chain-just-how-deep-5.swf.trace                    |    6 
 test/trace/scope-chain-just-how-deep-6.swf                          |binary
 test/trace/scope-chain-just-how-deep-6.swf.trace                    |    6 
 test/trace/scope-chain-just-how-deep-7.swf                          |binary
 test/trace/scope-chain-just-how-deep-7.swf.trace                    |    6 
 test/trace/scope-chain-just-how-deep-8.swf                          |binary
 test/trace/scope-chain-just-how-deep-8.swf.trace                    |    6 
 test/trace/scope-chain-just-how-deep.as                             |   33 ++
 test/trace/scope-chain-on-activation-object-persistance-5.swf       |binary
 test/trace/scope-chain-on-activation-object-persistance-5.swf.trace |    3 
 test/trace/scope-chain-on-activation-object-persistance-6.swf       |binary
 test/trace/scope-chain-on-activation-object-persistance-6.swf.trace |    3 
 test/trace/scope-chain-on-activation-object-persistance-7.swf       |binary
 test/trace/scope-chain-on-activation-object-persistance-7.swf.trace |    3 
 test/trace/scope-chain-on-activation-object-persistance-8.swf       |binary
 test/trace/scope-chain-on-activation-object-persistance-8.swf.trace |    3 
 test/trace/scope-chain-on-activation-object-persistance.as          |   18 +
 test/trace/scope-chain-on-duplication-5.swf                         |binary
 test/trace/scope-chain-on-duplication-5.swf.trace                   |    4 
 test/trace/scope-chain-on-duplication-6.swf                         |binary
 test/trace/scope-chain-on-duplication-6.swf.trace                   |    4 
 test/trace/scope-chain-on-duplication-7.swf                         |binary
 test/trace/scope-chain-on-duplication-7.swf.trace                   |    4 
 test/trace/scope-chain-on-duplication-8.swf                         |binary
 test/trace/scope-chain-on-duplication-8.swf.trace                   |    4 
 test/trace/scope-chain-on-duplication.as                            |   25 ++
 test/trace/scope-chain-scope-and-prototype-chain-5.swf              |binary
 test/trace/scope-chain-scope-and-prototype-chain-5.swf.trace        |    1 
 test/trace/scope-chain-scope-and-prototype-chain-6.swf              |binary
 test/trace/scope-chain-scope-and-prototype-chain-6.swf.trace        |    1 
 test/trace/scope-chain-scope-and-prototype-chain-7.swf              |binary
 test/trace/scope-chain-scope-and-prototype-chain-7.swf.trace        |    1 
 test/trace/scope-chain-scope-and-prototype-chain-8.swf              |binary
 test/trace/scope-chain-scope-and-prototype-chain-8.swf.trace        |    1 
 test/trace/scope-chain-scope-and-prototype-chain.as                 |   16 +
 test/trace/scope-chain-this-2-5.swf                                 |binary
 test/trace/scope-chain-this-2-5.swf.trace                           |    1 
 test/trace/scope-chain-this-2-6.swf                                 |binary
 test/trace/scope-chain-this-2-6.swf.trace                           |    1 
 test/trace/scope-chain-this-2-7.swf                                 |binary
 test/trace/scope-chain-this-2-7.swf.trace                           |    1 
 test/trace/scope-chain-this-2-8.swf                                 |binary
 test/trace/scope-chain-this-2-8.swf.trace                           |    1 
 test/trace/scope-chain-this-2.as                                    |   14 +
 test/trace/scope-chain-this-5.swf                                   |binary
 test/trace/scope-chain-this-5.swf.trace                             |    2 
 test/trace/scope-chain-this-6.swf                                   |binary
 test/trace/scope-chain-this-6.swf.trace                             |    2 
 test/trace/scope-chain-this-7.swf                                   |binary
 test/trace/scope-chain-this-7.swf.trace                             |    2 
 test/trace/scope-chain-this-8.swf                                   |binary
 test/trace/scope-chain-this-8.swf.trace                             |    2 
 test/trace/scope-chain-this.as                                      |   20 +
 test/trace/scope-chain-what-is-5.swf                                |binary
 test/trace/scope-chain-what-is-5.swf.trace                          |    3 
 test/trace/scope-chain-what-is-6.swf                                |binary
 test/trace/scope-chain-what-is-6.swf.trace                          |    3 
 test/trace/scope-chain-what-is-7.swf                                |binary
 test/trace/scope-chain-what-is-7.swf.trace                          |    3 
 test/trace/scope-chain-what-is-8.swf                                |binary
 test/trace/scope-chain-what-is-8.swf.trace                          |    3 
 test/trace/scope-chain-what-is.as                                   |   16 +
 test/trace/scope-chain-with-and-scope-chain-5.swf                   |binary
 test/trace/scope-chain-with-and-scope-chain-5.swf.trace             |    2 
 test/trace/scope-chain-with-and-scope-chain-6.swf                   |binary
 test/trace/scope-chain-with-and-scope-chain-6.swf.trace             |    2 
 test/trace/scope-chain-with-and-scope-chain-7.swf                   |binary
 test/trace/scope-chain-with-and-scope-chain-7.swf.trace             |    2 
 test/trace/scope-chain-with-and-scope-chain-8.swf                   |binary
 test/trace/scope-chain-with-and-scope-chain-8.swf.trace             |    2 
 test/trace/scope-chain-with-and-scope-chain.as                      |   14 +
 119 files changed, 513 insertions(+), 5 deletions(-)

New commits:
diff-tree 9c4a5df4d39d861247676283426891e29bfe9fe2 (from 87e4fa70d0d8cb93ec124fe97e5781794a8a2d7e)
Author: Benjamin Otte <otte at gnome.org>
Date:   Thu Sep 13 20:45:51 2007 +0200

    add tests from http://www.timotheegroleau.com/Flash/articles/scope_chain.htm

diff --git a/test/trace/Makefile.am b/test/trace/Makefile.am
index fb81cde..eb8a89a 100644
--- a/test/trace/Makefile.am
+++ b/test/trace/Makefile.am
@@ -1145,6 +1145,123 @@ EXTRA_DIST = \
 	scope.swf.trace \
 	scope2.swf \
 	scope2.swf.trace \
+	scope-chain-did-you-understand.as \
+	scope-chain-did-you-understand-5.swf \
+	scope-chain-did-you-understand-5.swf.trace \
+	scope-chain-did-you-understand-6.swf \
+	scope-chain-did-you-understand-6.swf.trace \
+	scope-chain-did-you-understand-7.swf \
+	scope-chain-did-you-understand-7.swf.trace \
+	scope-chain-did-you-understand-8.swf \
+	scope-chain-did-you-understand-8.swf.trace \
+	scope-chain-function-and.as \
+	scope-chain-function-and-5.swf \
+	scope-chain-function-and-5.swf.trace \
+	scope-chain-function-and-6.swf \
+	scope-chain-function-and-6.swf.trace \
+	scope-chain-function-and-7.swf \
+	scope-chain-function-and-7.swf.trace \
+	scope-chain-function-and-8.swf \
+	scope-chain-function-and-8.swf.trace \
+	scope-chain-how-are-variables-assigned.as \
+	scope-chain-how-are-variables-assigned-5.swf \
+	scope-chain-how-are-variables-assigned-5.swf.trace \
+	scope-chain-how-are-variables-assigned-6.swf \
+	scope-chain-how-are-variables-assigned-6.swf.trace \
+	scope-chain-how-are-variables-assigned-7.swf \
+	scope-chain-how-are-variables-assigned-7.swf.trace \
+	scope-chain-how-are-variables-assigned-8.swf \
+	scope-chain-how-are-variables-assigned-8.swf.trace \
+	scope-chain-how-are-variables-assigned-2.as \
+	scope-chain-how-are-variables-assigned-2-5.swf \
+	scope-chain-how-are-variables-assigned-2-5.swf.trace \
+	scope-chain-how-are-variables-assigned-2-6.swf \
+	scope-chain-how-are-variables-assigned-2-6.swf.trace \
+	scope-chain-how-are-variables-assigned-2-7.swf \
+	scope-chain-how-are-variables-assigned-2-7.swf.trace \
+	scope-chain-how-are-variables-assigned-2-8.swf \
+	scope-chain-how-are-variables-assigned-2-8.swf.trace \
+	scope-chain-how-are-variables-assigned-3.as \
+	scope-chain-how-are-variables-assigned-3-5.swf \
+	scope-chain-how-are-variables-assigned-3-5.swf.trace \
+	scope-chain-how-are-variables-assigned-3-6.swf \
+	scope-chain-how-are-variables-assigned-3-6.swf.trace \
+	scope-chain-how-are-variables-assigned-3-7.swf \
+	scope-chain-how-are-variables-assigned-3-7.swf.trace \
+	scope-chain-how-are-variables-assigned-3-8.swf \
+	scope-chain-how-are-variables-assigned-3-8.swf.trace \
+	scope-chain-just-how-deep.as \
+	scope-chain-just-how-deep-5.swf \
+	scope-chain-just-how-deep-5.swf.trace \
+	scope-chain-just-how-deep-6.swf \
+	scope-chain-just-how-deep-6.swf.trace \
+	scope-chain-just-how-deep-7.swf \
+	scope-chain-just-how-deep-7.swf.trace \
+	scope-chain-just-how-deep-8.swf \
+	scope-chain-just-how-deep-8.swf.trace \
+	scope-chain-on-activation-object-persistance.as \
+	scope-chain-on-activation-object-persistance-5.swf \
+	scope-chain-on-activation-object-persistance-5.swf.trace \
+	scope-chain-on-activation-object-persistance-6.swf \
+	scope-chain-on-activation-object-persistance-6.swf.trace \
+	scope-chain-on-activation-object-persistance-7.swf \
+	scope-chain-on-activation-object-persistance-7.swf.trace \
+	scope-chain-on-activation-object-persistance-8.swf \
+	scope-chain-on-activation-object-persistance-8.swf.trace \
+	scope-chain-on-duplication.as \
+	scope-chain-on-duplication-5.swf \
+	scope-chain-on-duplication-5.swf.trace \
+	scope-chain-on-duplication-6.swf \
+	scope-chain-on-duplication-6.swf.trace \
+	scope-chain-on-duplication-7.swf \
+	scope-chain-on-duplication-7.swf.trace \
+	scope-chain-on-duplication-8.swf \
+	scope-chain-on-duplication-8.swf.trace \
+	scope-chain-scope-and-prototype-chain.as \
+	scope-chain-scope-and-prototype-chain-5.swf \
+	scope-chain-scope-and-prototype-chain-5.swf.trace \
+	scope-chain-scope-and-prototype-chain-6.swf \
+	scope-chain-scope-and-prototype-chain-6.swf.trace \
+	scope-chain-scope-and-prototype-chain-7.swf \
+	scope-chain-scope-and-prototype-chain-7.swf.trace \
+	scope-chain-scope-and-prototype-chain-8.swf \
+	scope-chain-scope-and-prototype-chain-8.swf.trace \
+	scope-chain-this-2.as \
+	scope-chain-this-2-5.swf \
+	scope-chain-this-2-5.swf.trace \
+	scope-chain-this-2-6.swf \
+	scope-chain-this-2-6.swf.trace \
+	scope-chain-this-2-7.swf \
+	scope-chain-this-2-7.swf.trace \
+	scope-chain-this-2-8.swf \
+	scope-chain-this-2-8.swf.trace \
+	scope-chain-this.as \
+	scope-chain-this-5.swf \
+	scope-chain-this-5.swf.trace \
+	scope-chain-this-6.swf \
+	scope-chain-this-6.swf.trace \
+	scope-chain-this-7.swf \
+	scope-chain-this-7.swf.trace \
+	scope-chain-this-8.swf \
+	scope-chain-this-8.swf.trace \
+	scope-chain-what-is.as \
+	scope-chain-what-is-5.swf \
+	scope-chain-what-is-5.swf.trace \
+	scope-chain-what-is-6.swf \
+	scope-chain-what-is-6.swf.trace \
+	scope-chain-what-is-7.swf \
+	scope-chain-what-is-7.swf.trace \
+	scope-chain-what-is-8.swf \
+	scope-chain-what-is-8.swf.trace \
+	scope-chain-with-and-scope-chain.as \
+	scope-chain-with-and-scope-chain-5.swf \
+	scope-chain-with-and-scope-chain-5.swf.trace \
+	scope-chain-with-and-scope-chain-6.swf \
+	scope-chain-with-and-scope-chain-6.swf.trace \
+	scope-chain-with-and-scope-chain-7.swf \
+	scope-chain-with-and-scope-chain-7.swf.trace \
+	scope-chain-with-and-scope-chain-8.swf \
+	scope-chain-with-and-scope-chain-8.swf.trace \
 	set-overwrite-global-5.swf \
 	set-overwrite-global-6.swf \
 	set-overwrite-global-7.swf \
diff --git a/test/trace/scope-chain-did-you-understand-5.swf b/test/trace/scope-chain-did-you-understand-5.swf
new file mode 100644
index 0000000..90e1d54
Binary files /dev/null and b/test/trace/scope-chain-did-you-understand-5.swf differ
diff --git a/test/trace/scope-chain-did-you-understand-5.swf.trace b/test/trace/scope-chain-did-you-understand-5.swf.trace
new file mode 100644
index 0000000..7f8f011
--- /dev/null
+++ b/test/trace/scope-chain-did-you-understand-5.swf.trace
@@ -0,0 +1 @@
+7
diff --git a/test/trace/scope-chain-did-you-understand-6.swf b/test/trace/scope-chain-did-you-understand-6.swf
new file mode 100644
index 0000000..bb7d117
Binary files /dev/null and b/test/trace/scope-chain-did-you-understand-6.swf differ
diff --git a/test/trace/scope-chain-did-you-understand-6.swf.trace b/test/trace/scope-chain-did-you-understand-6.swf.trace
new file mode 100644
index 0000000..7ed6ff8
--- /dev/null
+++ b/test/trace/scope-chain-did-you-understand-6.swf.trace
@@ -0,0 +1 @@
+5
diff --git a/test/trace/scope-chain-did-you-understand-7.swf b/test/trace/scope-chain-did-you-understand-7.swf
new file mode 100644
index 0000000..28ba86a
Binary files /dev/null and b/test/trace/scope-chain-did-you-understand-7.swf differ
diff --git a/test/trace/scope-chain-did-you-understand-7.swf.trace b/test/trace/scope-chain-did-you-understand-7.swf.trace
new file mode 100644
index 0000000..7ed6ff8
--- /dev/null
+++ b/test/trace/scope-chain-did-you-understand-7.swf.trace
@@ -0,0 +1 @@
+5
diff --git a/test/trace/scope-chain-did-you-understand-8.swf b/test/trace/scope-chain-did-you-understand-8.swf
new file mode 100644
index 0000000..17e2edf
Binary files /dev/null and b/test/trace/scope-chain-did-you-understand-8.swf differ
diff --git a/test/trace/scope-chain-did-you-understand-8.swf.trace b/test/trace/scope-chain-did-you-understand-8.swf.trace
new file mode 100644
index 0000000..7ed6ff8
--- /dev/null
+++ b/test/trace/scope-chain-did-you-understand-8.swf.trace
@@ -0,0 +1 @@
+5
diff --git a/test/trace/scope-chain-did-you-understand.as b/test/trace/scope-chain-did-you-understand.as
new file mode 100644
index 0000000..7d01c98
--- /dev/null
+++ b/test/trace/scope-chain-did-you-understand.as
@@ -0,0 +1,23 @@
+// makeswf -v 7 -s 200x150 -r 1 -o scope-chain-did-you-understand.swf scope-chain-did-you-understand.as
+// taken with permission from http://www.timotheegroleau.com/Flash/articles/scope_chain.htm
+
+getMethod = function() {
+  var setProto = function() {
+    this.__proto__ = o1;
+  };
+  setProto();
+
+  return function() {
+    trace(a);
+  };
+};
+
+_global.a = 4;
+o1 = {a:5};
+o2 = {a:6};
+a = 7;
+
+o2.theMethod = getMethod();
+o2.theMethod();
+
+loadMovie ("FSCommand:quit", "");
diff --git a/test/trace/scope-chain-function-and-5.swf b/test/trace/scope-chain-function-and-5.swf
new file mode 100644
index 0000000..fffebc2
Binary files /dev/null and b/test/trace/scope-chain-function-and-5.swf differ
diff --git a/test/trace/scope-chain-function-and-5.swf.trace b/test/trace/scope-chain-function-and-5.swf.trace
new file mode 100644
index 0000000..3233477
--- /dev/null
+++ b/test/trace/scope-chain-function-and-5.swf.trace
@@ -0,0 +1,2 @@
+5
+undefined
diff --git a/test/trace/scope-chain-function-and-6.swf b/test/trace/scope-chain-function-and-6.swf
new file mode 100644
index 0000000..1e07f5d
Binary files /dev/null and b/test/trace/scope-chain-function-and-6.swf differ
diff --git a/test/trace/scope-chain-function-and-6.swf.trace b/test/trace/scope-chain-function-and-6.swf.trace
new file mode 100644
index 0000000..3233477
--- /dev/null
+++ b/test/trace/scope-chain-function-and-6.swf.trace
@@ -0,0 +1,2 @@
+5
+undefined
diff --git a/test/trace/scope-chain-function-and-7.swf b/test/trace/scope-chain-function-and-7.swf
new file mode 100644
index 0000000..d78af1a
Binary files /dev/null and b/test/trace/scope-chain-function-and-7.swf differ
diff --git a/test/trace/scope-chain-function-and-7.swf.trace b/test/trace/scope-chain-function-and-7.swf.trace
new file mode 100644
index 0000000..3233477
--- /dev/null
+++ b/test/trace/scope-chain-function-and-7.swf.trace
@@ -0,0 +1,2 @@
+5
+undefined
diff --git a/test/trace/scope-chain-function-and-8.swf b/test/trace/scope-chain-function-and-8.swf
new file mode 100644
index 0000000..ca3266d
Binary files /dev/null and b/test/trace/scope-chain-function-and-8.swf differ
diff --git a/test/trace/scope-chain-function-and-8.swf.trace b/test/trace/scope-chain-function-and-8.swf.trace
new file mode 100644
index 0000000..3233477
--- /dev/null
+++ b/test/trace/scope-chain-function-and-8.swf.trace
@@ -0,0 +1,2 @@
+5
+undefined
diff --git a/test/trace/scope-chain-function-and.as b/test/trace/scope-chain-function-and.as
new file mode 100644
index 0000000..834640a
--- /dev/null
+++ b/test/trace/scope-chain-function-and.as
@@ -0,0 +1,16 @@
+// makeswf -v 7 -s 200x150 -r 1 -o scope-chain-function-and.swf scope-chain-function-and.as
+// taken with permission from http://www.timotheegroleau.com/Flash/articles/scope_chain.htm
+
+a = 5;
+test = function() {
+  trace(a); // 5
+  delete a;
+  trace(a); // undefined
+};
+
+obj = new Object();
+obj.a = 6;
+obj.meth = test;
+obj.meth();
+
+loadMovie ("FSCommand:quit", "");
diff --git a/test/trace/scope-chain-how-are-variables-assigned-2-5.swf b/test/trace/scope-chain-how-are-variables-assigned-2-5.swf
new file mode 100644
index 0000000..1f3a73d
Binary files /dev/null and b/test/trace/scope-chain-how-are-variables-assigned-2-5.swf differ
diff --git a/test/trace/scope-chain-how-are-variables-assigned-2-5.swf.trace b/test/trace/scope-chain-how-are-variables-assigned-2-5.swf.trace
new file mode 100644
index 0000000..5dda7d4
--- /dev/null
+++ b/test/trace/scope-chain-how-are-variables-assigned-2-5.swf.trace
@@ -0,0 +1,4 @@
+The first 'a' reference found is: 4
+5
+undefined
+undefined
diff --git a/test/trace/scope-chain-how-are-variables-assigned-2-6.swf b/test/trace/scope-chain-how-are-variables-assigned-2-6.swf
new file mode 100644
index 0000000..682c651
Binary files /dev/null and b/test/trace/scope-chain-how-are-variables-assigned-2-6.swf differ
diff --git a/test/trace/scope-chain-how-are-variables-assigned-2-6.swf.trace b/test/trace/scope-chain-how-are-variables-assigned-2-6.swf.trace
new file mode 100644
index 0000000..5dda7d4
--- /dev/null
+++ b/test/trace/scope-chain-how-are-variables-assigned-2-6.swf.trace
@@ -0,0 +1,4 @@
+The first 'a' reference found is: 4
+5
+undefined
+undefined
diff --git a/test/trace/scope-chain-how-are-variables-assigned-2-7.swf b/test/trace/scope-chain-how-are-variables-assigned-2-7.swf
new file mode 100644
index 0000000..db3a538
Binary files /dev/null and b/test/trace/scope-chain-how-are-variables-assigned-2-7.swf differ
diff --git a/test/trace/scope-chain-how-are-variables-assigned-2-7.swf.trace b/test/trace/scope-chain-how-are-variables-assigned-2-7.swf.trace
new file mode 100644
index 0000000..5dda7d4
--- /dev/null
+++ b/test/trace/scope-chain-how-are-variables-assigned-2-7.swf.trace
@@ -0,0 +1,4 @@
+The first 'a' reference found is: 4
+5
+undefined
+undefined
diff --git a/test/trace/scope-chain-how-are-variables-assigned-2-8.swf b/test/trace/scope-chain-how-are-variables-assigned-2-8.swf
new file mode 100644
index 0000000..95ca7e6
Binary files /dev/null and b/test/trace/scope-chain-how-are-variables-assigned-2-8.swf differ
diff --git a/test/trace/scope-chain-how-are-variables-assigned-2-8.swf.trace b/test/trace/scope-chain-how-are-variables-assigned-2-8.swf.trace
new file mode 100644
index 0000000..5dda7d4
--- /dev/null
+++ b/test/trace/scope-chain-how-are-variables-assigned-2-8.swf.trace
@@ -0,0 +1,4 @@
+The first 'a' reference found is: 4
+5
+undefined
+undefined
diff --git a/test/trace/scope-chain-how-are-variables-assigned-2.as b/test/trace/scope-chain-how-are-variables-assigned-2.as
new file mode 100644
index 0000000..68849a6
--- /dev/null
+++ b/test/trace/scope-chain-how-are-variables-assigned-2.as
@@ -0,0 +1,16 @@
+// makeswf -v 7 -s 200x150 -r 1 -o scope-chain-how-are-variables-assigned-2.swf scope-chain-how-are-variables-assigned-2.as
+// taken with permission from http://www.timotheegroleau.com/Flash/articles/scope_chain.htm
+
+o1 = {a:4};
+o2 = {};
+with (o1) {
+  with (o2) {
+    trace("The first 'a' reference found is: " + a);
+    a = 5;
+  };
+};
+trace(o1.a); // 5
+trace(o2.a); // undefined
+trace(a); // undefined
+
+loadMovie ("FSCommand:quit", "");
diff --git a/test/trace/scope-chain-how-are-variables-assigned-3-5.swf b/test/trace/scope-chain-how-are-variables-assigned-3-5.swf
new file mode 100644
index 0000000..a6b61c3
Binary files /dev/null and b/test/trace/scope-chain-how-are-variables-assigned-3-5.swf differ
diff --git a/test/trace/scope-chain-how-are-variables-assigned-3-5.swf.trace b/test/trace/scope-chain-how-are-variables-assigned-3-5.swf.trace
new file mode 100644
index 0000000..d5d1b82
--- /dev/null
+++ b/test/trace/scope-chain-how-are-variables-assigned-3-5.swf.trace
@@ -0,0 +1,4 @@
+The first 'a' reference found is: 4
+4
+undefined
+5
diff --git a/test/trace/scope-chain-how-are-variables-assigned-3-6.swf b/test/trace/scope-chain-how-are-variables-assigned-3-6.swf
new file mode 100644
index 0000000..f270e33
Binary files /dev/null and b/test/trace/scope-chain-how-are-variables-assigned-3-6.swf differ
diff --git a/test/trace/scope-chain-how-are-variables-assigned-3-6.swf.trace b/test/trace/scope-chain-how-are-variables-assigned-3-6.swf.trace
new file mode 100644
index 0000000..d5d1b82
--- /dev/null
+++ b/test/trace/scope-chain-how-are-variables-assigned-3-6.swf.trace
@@ -0,0 +1,4 @@
+The first 'a' reference found is: 4
+4
+undefined
+5
diff --git a/test/trace/scope-chain-how-are-variables-assigned-3-7.swf b/test/trace/scope-chain-how-are-variables-assigned-3-7.swf
new file mode 100644
index 0000000..98a0159
Binary files /dev/null and b/test/trace/scope-chain-how-are-variables-assigned-3-7.swf differ
diff --git a/test/trace/scope-chain-how-are-variables-assigned-3-7.swf.trace b/test/trace/scope-chain-how-are-variables-assigned-3-7.swf.trace
new file mode 100644
index 0000000..d5d1b82
--- /dev/null
+++ b/test/trace/scope-chain-how-are-variables-assigned-3-7.swf.trace
@@ -0,0 +1,4 @@
+The first 'a' reference found is: 4
+4
+undefined
+5
diff --git a/test/trace/scope-chain-how-are-variables-assigned-3-8.swf b/test/trace/scope-chain-how-are-variables-assigned-3-8.swf
new file mode 100644
index 0000000..725e01b
Binary files /dev/null and b/test/trace/scope-chain-how-are-variables-assigned-3-8.swf differ
diff --git a/test/trace/scope-chain-how-are-variables-assigned-3-8.swf.trace b/test/trace/scope-chain-how-are-variables-assigned-3-8.swf.trace
new file mode 100644
index 0000000..d5d1b82
--- /dev/null
+++ b/test/trace/scope-chain-how-are-variables-assigned-3-8.swf.trace
@@ -0,0 +1,4 @@
+The first 'a' reference found is: 4
+4
+undefined
+5
diff --git a/test/trace/scope-chain-how-are-variables-assigned-3.as b/test/trace/scope-chain-how-are-variables-assigned-3.as
new file mode 100644
index 0000000..82cff6e
--- /dev/null
+++ b/test/trace/scope-chain-how-are-variables-assigned-3.as
@@ -0,0 +1,17 @@
+// makeswf -v 7 -s 200x150 -r 1 -o scope-chain-how-are-variables-assigned-3.swf scope-chain-how-are-variables-assigned-3.as
+// taken with permission from http://www.timotheegroleau.com/Flash/articles/scope_chain.htm
+
+o1 = {};
+o1.__proto__ = {a:4};
+o2 = {};
+with (o1) {
+  with (o2) {
+    trace("The first 'a' reference found is: " + a);
+    a = 5;
+  };
+};
+trace(o1.a); // 4
+trace(o2.a); // undefined
+trace(a); // 5
+
+loadMovie ("FSCommand:quit", "");
diff --git a/test/trace/scope-chain-how-are-variables-assigned-5.swf b/test/trace/scope-chain-how-are-variables-assigned-5.swf
new file mode 100644
index 0000000..d1e9706
Binary files /dev/null and b/test/trace/scope-chain-how-are-variables-assigned-5.swf differ
diff --git a/test/trace/scope-chain-how-are-variables-assigned-5.swf.trace b/test/trace/scope-chain-how-are-variables-assigned-5.swf.trace
new file mode 100644
index 0000000..17c33eb
--- /dev/null
+++ b/test/trace/scope-chain-how-are-variables-assigned-5.swf.trace
@@ -0,0 +1,4 @@
+The first 'a' reference found is: 
+undefined
+undefined
+5
diff --git a/test/trace/scope-chain-how-are-variables-assigned-6.swf b/test/trace/scope-chain-how-are-variables-assigned-6.swf
new file mode 100644
index 0000000..1f024dd
Binary files /dev/null and b/test/trace/scope-chain-how-are-variables-assigned-6.swf differ
diff --git a/test/trace/scope-chain-how-are-variables-assigned-6.swf.trace b/test/trace/scope-chain-how-are-variables-assigned-6.swf.trace
new file mode 100644
index 0000000..17c33eb
--- /dev/null
+++ b/test/trace/scope-chain-how-are-variables-assigned-6.swf.trace
@@ -0,0 +1,4 @@
+The first 'a' reference found is: 
+undefined
+undefined
+5
diff --git a/test/trace/scope-chain-how-are-variables-assigned-7.swf b/test/trace/scope-chain-how-are-variables-assigned-7.swf
new file mode 100644
index 0000000..ba0df03
Binary files /dev/null and b/test/trace/scope-chain-how-are-variables-assigned-7.swf differ
diff --git a/test/trace/scope-chain-how-are-variables-assigned-7.swf.trace b/test/trace/scope-chain-how-are-variables-assigned-7.swf.trace
new file mode 100644
index 0000000..70da056
--- /dev/null
+++ b/test/trace/scope-chain-how-are-variables-assigned-7.swf.trace
@@ -0,0 +1,4 @@
+The first 'a' reference found is: undefined
+undefined
+undefined
+5
diff --git a/test/trace/scope-chain-how-are-variables-assigned-8.swf b/test/trace/scope-chain-how-are-variables-assigned-8.swf
new file mode 100644
index 0000000..7caeb07
Binary files /dev/null and b/test/trace/scope-chain-how-are-variables-assigned-8.swf differ
diff --git a/test/trace/scope-chain-how-are-variables-assigned-8.swf.trace b/test/trace/scope-chain-how-are-variables-assigned-8.swf.trace
new file mode 100644
index 0000000..70da056
--- /dev/null
+++ b/test/trace/scope-chain-how-are-variables-assigned-8.swf.trace
@@ -0,0 +1,4 @@
+The first 'a' reference found is: undefined
+undefined
+undefined
+5
diff --git a/test/trace/scope-chain-how-are-variables-assigned.as b/test/trace/scope-chain-how-are-variables-assigned.as
new file mode 100644
index 0000000..9a5ce7d
--- /dev/null
+++ b/test/trace/scope-chain-how-are-variables-assigned.as
@@ -0,0 +1,16 @@
+// makeswf -v 7 -s 200x150 -r 1 -o scope-chain-how-are-variables-assigned.swf scope-chain-how-are-variables-assigned.as
+// taken with permission from http://www.timotheegroleau.com/Flash/articles/scope_chain.htm
+
+o1 = {};
+o2 = {};
+with (o1) {
+  with (o2) {
+    trace("The first 'a' reference found is: " + a);
+    a = 5;
+  };
+};
+trace(o1.a); // undefined
+trace(o2.a); // undefined
+trace(a); // 5
+
+loadMovie ("FSCommand:quit", "");
diff --git a/test/trace/scope-chain-just-how-deep-5.swf b/test/trace/scope-chain-just-how-deep-5.swf
new file mode 100644
index 0000000..8798e9f
Binary files /dev/null and b/test/trace/scope-chain-just-how-deep-5.swf differ
diff --git a/test/trace/scope-chain-just-how-deep-5.swf.trace b/test/trace/scope-chain-just-how-deep-5.swf.trace
new file mode 100644
index 0000000..3a2e34c
--- /dev/null
+++ b/test/trace/scope-chain-just-how-deep-5.swf.trace
@@ -0,0 +1,6 @@
+10
+undefined
+undefined
+undefined
+undefined
+5
diff --git a/test/trace/scope-chain-just-how-deep-6.swf b/test/trace/scope-chain-just-how-deep-6.swf
new file mode 100644
index 0000000..1168ba7
Binary files /dev/null and b/test/trace/scope-chain-just-how-deep-6.swf differ
diff --git a/test/trace/scope-chain-just-how-deep-6.swf.trace b/test/trace/scope-chain-just-how-deep-6.swf.trace
new file mode 100644
index 0000000..14aa4af
--- /dev/null
+++ b/test/trace/scope-chain-just-how-deep-6.swf.trace
@@ -0,0 +1,6 @@
+10
+9
+8
+7
+6
+5
diff --git a/test/trace/scope-chain-just-how-deep-7.swf b/test/trace/scope-chain-just-how-deep-7.swf
new file mode 100644
index 0000000..97256bf
Binary files /dev/null and b/test/trace/scope-chain-just-how-deep-7.swf differ
diff --git a/test/trace/scope-chain-just-how-deep-7.swf.trace b/test/trace/scope-chain-just-how-deep-7.swf.trace
new file mode 100644
index 0000000..14aa4af
--- /dev/null
+++ b/test/trace/scope-chain-just-how-deep-7.swf.trace
@@ -0,0 +1,6 @@
+10
+9
+8
+7
+6
+5
diff --git a/test/trace/scope-chain-just-how-deep-8.swf b/test/trace/scope-chain-just-how-deep-8.swf
new file mode 100644
index 0000000..61719d5
Binary files /dev/null and b/test/trace/scope-chain-just-how-deep-8.swf differ
diff --git a/test/trace/scope-chain-just-how-deep-8.swf.trace b/test/trace/scope-chain-just-how-deep-8.swf.trace
new file mode 100644
index 0000000..14aa4af
--- /dev/null
+++ b/test/trace/scope-chain-just-how-deep-8.swf.trace
@@ -0,0 +1,6 @@
+10
+9
+8
+7
+6
+5
diff --git a/test/trace/scope-chain-just-how-deep.as b/test/trace/scope-chain-just-how-deep.as
new file mode 100644
index 0000000..51f96bd
--- /dev/null
+++ b/test/trace/scope-chain-just-how-deep.as
@@ -0,0 +1,33 @@
+// makeswf -v 7 -s 200x150 -r 1 -o scope-chain-just-how-deep.swf scope-chain-just-how-deep.as
+// taken with permission from http://www.timotheegroleau.com/Flash/articles/scope_chain.htm
+
+a1 = 5;
+addFunc = function(obj) {
+  var a2 = 6;
+  var func = function(obj) {
+    var a3 = 7;
+    var func = function(obj) {
+      var a4 = 8;
+      var func = function(obj) {
+	var a5 = 9;
+	obj.retrieve = function(refName) {
+	  var a6 = 10;
+	  trace(eval(refName));
+	};
+      };
+      func(obj);
+    };
+    func(obj);
+  };
+  func(obj);
+};
+o = {};
+addFunc(o);
+o.retrieve("a6"); // 10
+o.retrieve("a5"); // 9
+o.retrieve("a4"); // 8
+o.retrieve("a3"); // 7
+o.retrieve("a2"); // 6
+o.retrieve("a1"); // 5
+
+loadMovie ("FSCommand:quit", "");
diff --git a/test/trace/scope-chain-on-activation-object-persistance-5.swf b/test/trace/scope-chain-on-activation-object-persistance-5.swf
new file mode 100644
index 0000000..7305d36
Binary files /dev/null and b/test/trace/scope-chain-on-activation-object-persistance-5.swf differ
diff --git a/test/trace/scope-chain-on-activation-object-persistance-5.swf.trace b/test/trace/scope-chain-on-activation-object-persistance-5.swf.trace
new file mode 100644
index 0000000..1a87c1e
--- /dev/null
+++ b/test/trace/scope-chain-on-activation-object-persistance-5.swf.trace
@@ -0,0 +1,3 @@
+undefined
+undefined
+undefined
diff --git a/test/trace/scope-chain-on-activation-object-persistance-6.swf b/test/trace/scope-chain-on-activation-object-persistance-6.swf
new file mode 100644
index 0000000..214640a
Binary files /dev/null and b/test/trace/scope-chain-on-activation-object-persistance-6.swf differ
diff --git a/test/trace/scope-chain-on-activation-object-persistance-6.swf.trace b/test/trace/scope-chain-on-activation-object-persistance-6.swf.trace
new file mode 100644
index 0000000..73c3559
--- /dev/null
+++ b/test/trace/scope-chain-on-activation-object-persistance-6.swf.trace
@@ -0,0 +1,3 @@
+Hello
+There
+Tim
diff --git a/test/trace/scope-chain-on-activation-object-persistance-7.swf b/test/trace/scope-chain-on-activation-object-persistance-7.swf
new file mode 100644
index 0000000..91b06f1
Binary files /dev/null and b/test/trace/scope-chain-on-activation-object-persistance-7.swf differ
diff --git a/test/trace/scope-chain-on-activation-object-persistance-7.swf.trace b/test/trace/scope-chain-on-activation-object-persistance-7.swf.trace
new file mode 100644
index 0000000..73c3559
--- /dev/null
+++ b/test/trace/scope-chain-on-activation-object-persistance-7.swf.trace
@@ -0,0 +1,3 @@
+Hello
+There
+Tim
diff --git a/test/trace/scope-chain-on-activation-object-persistance-8.swf b/test/trace/scope-chain-on-activation-object-persistance-8.swf
new file mode 100644
index 0000000..e519a87
Binary files /dev/null and b/test/trace/scope-chain-on-activation-object-persistance-8.swf differ
diff --git a/test/trace/scope-chain-on-activation-object-persistance-8.swf.trace b/test/trace/scope-chain-on-activation-object-persistance-8.swf.trace
new file mode 100644
index 0000000..73c3559
--- /dev/null
+++ b/test/trace/scope-chain-on-activation-object-persistance-8.swf.trace
@@ -0,0 +1,3 @@
+Hello
+There
+Tim
diff --git a/test/trace/scope-chain-on-activation-object-persistance.as b/test/trace/scope-chain-on-activation-object-persistance.as
new file mode 100644
index 0000000..119e85c
--- /dev/null
+++ b/test/trace/scope-chain-on-activation-object-persistance.as
@@ -0,0 +1,18 @@
+// makeswf -v 7 -s 200x150 -r 1 -o scope-chain-on-activation-object-persistance.swf scope-chain-on-activation-object-persistance.as
+// taken with permission from http://www.timotheegroleau.com/Flash/articles/scope_chain.htm
+
+test = function(obj) {
+  var aVariable_1 = "Hello";
+  var aVariable_2 = "There";
+  var aVariable_3 = "Tim";
+  obj.retrieve = function(refName) {
+    trace(eval(refName));
+  };
+};
+o = new Object();
+test(o);
+o.retrieve("aVariable_1"); // Hello
+o.retrieve("aVariable_2"); // There
+o.retrieve("aVariable_3"); // Tim
+
+loadMovie ("FSCommand:quit", "");
diff --git a/test/trace/scope-chain-on-duplication-5.swf b/test/trace/scope-chain-on-duplication-5.swf
new file mode 100644
index 0000000..2b61186
Binary files /dev/null and b/test/trace/scope-chain-on-duplication-5.swf differ
diff --git a/test/trace/scope-chain-on-duplication-5.swf.trace b/test/trace/scope-chain-on-duplication-5.swf.trace
new file mode 100644
index 0000000..bc9adbf
--- /dev/null
+++ b/test/trace/scope-chain-on-duplication-5.swf.trace
@@ -0,0 +1,4 @@
+undefined
+undefined
+true
+true
diff --git a/test/trace/scope-chain-on-duplication-6.swf b/test/trace/scope-chain-on-duplication-6.swf
new file mode 100644
index 0000000..4210882
Binary files /dev/null and b/test/trace/scope-chain-on-duplication-6.swf differ
diff --git a/test/trace/scope-chain-on-duplication-6.swf.trace b/test/trace/scope-chain-on-duplication-6.swf.trace
new file mode 100644
index 0000000..aa9dc9a
--- /dev/null
+++ b/test/trace/scope-chain-on-duplication-6.swf.trace
@@ -0,0 +1,4 @@
+Hello there
+Hello there
+false
+false
diff --git a/test/trace/scope-chain-on-duplication-7.swf b/test/trace/scope-chain-on-duplication-7.swf
new file mode 100644
index 0000000..fbb8b86
Binary files /dev/null and b/test/trace/scope-chain-on-duplication-7.swf differ
diff --git a/test/trace/scope-chain-on-duplication-7.swf.trace b/test/trace/scope-chain-on-duplication-7.swf.trace
new file mode 100644
index 0000000..aa9dc9a
--- /dev/null
+++ b/test/trace/scope-chain-on-duplication-7.swf.trace
@@ -0,0 +1,4 @@
+Hello there
+Hello there
+false
+false
diff --git a/test/trace/scope-chain-on-duplication-8.swf b/test/trace/scope-chain-on-duplication-8.swf
new file mode 100644
index 0000000..6cdea54
Binary files /dev/null and b/test/trace/scope-chain-on-duplication-8.swf differ
diff --git a/test/trace/scope-chain-on-duplication-8.swf.trace b/test/trace/scope-chain-on-duplication-8.swf.trace
new file mode 100644
index 0000000..aa9dc9a
--- /dev/null
+++ b/test/trace/scope-chain-on-duplication-8.swf.trace
@@ -0,0 +1,4 @@
+Hello there
+Hello there
+false
+false
diff --git a/test/trace/scope-chain-on-duplication.as b/test/trace/scope-chain-on-duplication.as
new file mode 100644
index 0000000..f02068d
--- /dev/null
+++ b/test/trace/scope-chain-on-duplication.as
@@ -0,0 +1,25 @@
+// makeswf -v 7 -s 200x150 -r 1 -o scope-chain-on-duplication.swf scope-chain-on-duplication.as
+// taken with permission from http://www.timotheegroleau.com/Flash/articles/scope_chain.htm
+
+addFunc = function(obj) {
+  var aVariable = new Object();
+  aVariable.txt = "Hello there";
+
+  obj.theFunc = function() {
+    return aVariable;
+  };
+};
+
+o1 = new Object();
+o2 = new Object();
+
+addFunc(o1);
+addFunc(o2);
+
+trace(o1.theFunc().txt); // Hello there
+trace(o2.theFunc().txt); // Hello there
+
+trace(o1.theFunc == o2.theFunc) ; // false
+trace(o1.theFunc() == o2.theFunc()) ; // false
+
+loadMovie ("FSCommand:quit", "");
diff --git a/test/trace/scope-chain-scope-and-prototype-chain-5.swf b/test/trace/scope-chain-scope-and-prototype-chain-5.swf
new file mode 100644
index 0000000..469163c
Binary files /dev/null and b/test/trace/scope-chain-scope-and-prototype-chain-5.swf differ
diff --git a/test/trace/scope-chain-scope-and-prototype-chain-5.swf.trace b/test/trace/scope-chain-scope-and-prototype-chain-5.swf.trace
new file mode 100644
index 0000000..7ed6ff8
--- /dev/null
+++ b/test/trace/scope-chain-scope-and-prototype-chain-5.swf.trace
@@ -0,0 +1 @@
+5
diff --git a/test/trace/scope-chain-scope-and-prototype-chain-6.swf b/test/trace/scope-chain-scope-and-prototype-chain-6.swf
new file mode 100644
index 0000000..f8dbc7f
Binary files /dev/null and b/test/trace/scope-chain-scope-and-prototype-chain-6.swf differ
diff --git a/test/trace/scope-chain-scope-and-prototype-chain-6.swf.trace b/test/trace/scope-chain-scope-and-prototype-chain-6.swf.trace
new file mode 100644
index 0000000..1e8b314
--- /dev/null
+++ b/test/trace/scope-chain-scope-and-prototype-chain-6.swf.trace
@@ -0,0 +1 @@
+6
diff --git a/test/trace/scope-chain-scope-and-prototype-chain-7.swf b/test/trace/scope-chain-scope-and-prototype-chain-7.swf
new file mode 100644
index 0000000..145e1b0
Binary files /dev/null and b/test/trace/scope-chain-scope-and-prototype-chain-7.swf differ
diff --git a/test/trace/scope-chain-scope-and-prototype-chain-7.swf.trace b/test/trace/scope-chain-scope-and-prototype-chain-7.swf.trace
new file mode 100644
index 0000000..1e8b314
--- /dev/null
+++ b/test/trace/scope-chain-scope-and-prototype-chain-7.swf.trace
@@ -0,0 +1 @@
+6
diff --git a/test/trace/scope-chain-scope-and-prototype-chain-8.swf b/test/trace/scope-chain-scope-and-prototype-chain-8.swf
new file mode 100644
index 0000000..06d454c
Binary files /dev/null and b/test/trace/scope-chain-scope-and-prototype-chain-8.swf differ
diff --git a/test/trace/scope-chain-scope-and-prototype-chain-8.swf.trace b/test/trace/scope-chain-scope-and-prototype-chain-8.swf.trace
new file mode 100644
index 0000000..1e8b314
--- /dev/null
+++ b/test/trace/scope-chain-scope-and-prototype-chain-8.swf.trace
@@ -0,0 +1 @@
+6
diff --git a/test/trace/scope-chain-scope-and-prototype-chain.as b/test/trace/scope-chain-scope-and-prototype-chain.as
new file mode 100644
index 0000000..558c2bb
--- /dev/null
+++ b/test/trace/scope-chain-scope-and-prototype-chain.as
@@ -0,0 +1,16 @@
+// makeswf -v 7 -s 200x150 -r 1 -o scope-chain-scope-and-prototype-chain.swf scope-chain-scope-and-prototype-chain.as
+// taken with permission from http://www.timotheegroleau.com/Flash/articles/scope_chain.htm
+
+a = 5;
+addFunc = function(obj) {
+  var __proto__ = new Object();
+  __proto__.a = 6;
+  obj.meth = function() {
+    trace(a);
+  };
+};
+o = {};
+addFunc(o);
+o.meth(); // 6
+
+loadMovie ("FSCommand:quit", "");
diff --git a/test/trace/scope-chain-this-2-5.swf b/test/trace/scope-chain-this-2-5.swf
new file mode 100644
index 0000000..cb20464
Binary files /dev/null and b/test/trace/scope-chain-this-2-5.swf differ
diff --git a/test/trace/scope-chain-this-2-5.swf.trace b/test/trace/scope-chain-this-2-5.swf.trace
new file mode 100644
index 0000000..7ed6ff8
--- /dev/null
+++ b/test/trace/scope-chain-this-2-5.swf.trace
@@ -0,0 +1 @@
+5
diff --git a/test/trace/scope-chain-this-2-6.swf b/test/trace/scope-chain-this-2-6.swf
new file mode 100644
index 0000000..f7dabe5
Binary files /dev/null and b/test/trace/scope-chain-this-2-6.swf differ
diff --git a/test/trace/scope-chain-this-2-6.swf.trace b/test/trace/scope-chain-this-2-6.swf.trace
new file mode 100644
index 0000000..7ed6ff8
--- /dev/null
+++ b/test/trace/scope-chain-this-2-6.swf.trace
@@ -0,0 +1 @@
+5
diff --git a/test/trace/scope-chain-this-2-7.swf b/test/trace/scope-chain-this-2-7.swf
new file mode 100644
index 0000000..ab17892
Binary files /dev/null and b/test/trace/scope-chain-this-2-7.swf differ
diff --git a/test/trace/scope-chain-this-2-7.swf.trace b/test/trace/scope-chain-this-2-7.swf.trace
new file mode 100644
index 0000000..7ed6ff8
--- /dev/null
+++ b/test/trace/scope-chain-this-2-7.swf.trace
@@ -0,0 +1 @@
+5
diff --git a/test/trace/scope-chain-this-2-8.swf b/test/trace/scope-chain-this-2-8.swf
new file mode 100644
index 0000000..61f65d4
Binary files /dev/null and b/test/trace/scope-chain-this-2-8.swf differ
diff --git a/test/trace/scope-chain-this-2-8.swf.trace b/test/trace/scope-chain-this-2-8.swf.trace
new file mode 100644
index 0000000..7ed6ff8
--- /dev/null
+++ b/test/trace/scope-chain-this-2-8.swf.trace
@@ -0,0 +1 @@
+5
diff --git a/test/trace/scope-chain-this-2.as b/test/trace/scope-chain-this-2.as
new file mode 100644
index 0000000..3405a36
--- /dev/null
+++ b/test/trace/scope-chain-this-2.as
@@ -0,0 +1,14 @@
+// makeswf -v 7 -s 200x150 -r 1 -o scope-chain-this-2.swf scope-chain-this-2.as
+// taken with permission from http://www.timotheegroleau.com/Flash/articles/scope_chain.htm
+
+a = 4;
+test = function() {
+  var a = 5;
+  var getRef = function() {
+    trace(this.a);
+  };
+  getRef(); // 5
+};
+test();
+
+loadMovie ("FSCommand:quit", "");
diff --git a/test/trace/scope-chain-this-5.swf b/test/trace/scope-chain-this-5.swf
new file mode 100644
index 0000000..74ee05e
Binary files /dev/null and b/test/trace/scope-chain-this-5.swf differ
diff --git a/test/trace/scope-chain-this-5.swf.trace b/test/trace/scope-chain-this-5.swf.trace
new file mode 100644
index 0000000..baf1966
--- /dev/null
+++ b/test/trace/scope-chain-this-5.swf.trace
@@ -0,0 +1,2 @@
+6
+7
diff --git a/test/trace/scope-chain-this-6.swf b/test/trace/scope-chain-this-6.swf
new file mode 100644
index 0000000..0b33b9a
Binary files /dev/null and b/test/trace/scope-chain-this-6.swf differ
diff --git a/test/trace/scope-chain-this-6.swf.trace b/test/trace/scope-chain-this-6.swf.trace
new file mode 100644
index 0000000..baf1966
--- /dev/null
+++ b/test/trace/scope-chain-this-6.swf.trace
@@ -0,0 +1,2 @@
+6
+7
diff --git a/test/trace/scope-chain-this-7.swf b/test/trace/scope-chain-this-7.swf
new file mode 100644
index 0000000..bfa7f2e
Binary files /dev/null and b/test/trace/scope-chain-this-7.swf differ
diff --git a/test/trace/scope-chain-this-7.swf.trace b/test/trace/scope-chain-this-7.swf.trace
new file mode 100644
index 0000000..baf1966
--- /dev/null
+++ b/test/trace/scope-chain-this-7.swf.trace
@@ -0,0 +1,2 @@
+6
+7
diff --git a/test/trace/scope-chain-this-8.swf b/test/trace/scope-chain-this-8.swf
new file mode 100644
index 0000000..94859a2
Binary files /dev/null and b/test/trace/scope-chain-this-8.swf differ
diff --git a/test/trace/scope-chain-this-8.swf.trace b/test/trace/scope-chain-this-8.swf.trace
new file mode 100644
index 0000000..baf1966
--- /dev/null
+++ b/test/trace/scope-chain-this-8.swf.trace
@@ -0,0 +1,2 @@
+6
+7
diff --git a/test/trace/scope-chain-this.as b/test/trace/scope-chain-this.as
new file mode 100644
index 0000000..c8e8593
--- /dev/null
+++ b/test/trace/scope-chain-this.as
@@ -0,0 +1,20 @@
+// makeswf -v 7 -s 200x150 -r 1 -o scope-chain-this.swf scope-chain-this.as
+// taken with permission from http://www.timotheegroleau.com/Flash/articles/scope_chain.htm
+
+a = 5;
+test = function() {
+    trace(this.a);
+};
+
+obj = new Object();
+obj.a = 6;
+obj.meth = test;
+
+obj2 = new Object();
+obj2.a = 7;
+obj2.meth = test;
+
+obj.meth(); // 6
+obj2.meth(); // 7
+
+loadMovie ("FSCommand:quit", "");
diff --git a/test/trace/scope-chain-what-is-5.swf b/test/trace/scope-chain-what-is-5.swf
new file mode 100644
index 0000000..1007b6b
Binary files /dev/null and b/test/trace/scope-chain-what-is-5.swf differ
diff --git a/test/trace/scope-chain-what-is-5.swf.trace b/test/trace/scope-chain-what-is-5.swf.trace
new file mode 100644
index 0000000..6e20af9
--- /dev/null
+++ b/test/trace/scope-chain-what-is-5.swf.trace
@@ -0,0 +1,3 @@
+6
+5
+undefined
diff --git a/test/trace/scope-chain-what-is-6.swf b/test/trace/scope-chain-what-is-6.swf
new file mode 100644
index 0000000..cffdc31
Binary files /dev/null and b/test/trace/scope-chain-what-is-6.swf differ
diff --git a/test/trace/scope-chain-what-is-6.swf.trace b/test/trace/scope-chain-what-is-6.swf.trace
new file mode 100644
index 0000000..62d6c89
--- /dev/null
+++ b/test/trace/scope-chain-what-is-6.swf.trace
@@ -0,0 +1,3 @@
+6
+5
+4
diff --git a/test/trace/scope-chain-what-is-7.swf b/test/trace/scope-chain-what-is-7.swf
new file mode 100644
index 0000000..d5523d9
Binary files /dev/null and b/test/trace/scope-chain-what-is-7.swf differ
diff --git a/test/trace/scope-chain-what-is-7.swf.trace b/test/trace/scope-chain-what-is-7.swf.trace
new file mode 100644
index 0000000..62d6c89
--- /dev/null
+++ b/test/trace/scope-chain-what-is-7.swf.trace
@@ -0,0 +1,3 @@
+6
+5
+4
diff --git a/test/trace/scope-chain-what-is-8.swf b/test/trace/scope-chain-what-is-8.swf
new file mode 100644
index 0000000..d0d67a8
Binary files /dev/null and b/test/trace/scope-chain-what-is-8.swf differ
diff --git a/test/trace/scope-chain-what-is-8.swf.trace b/test/trace/scope-chain-what-is-8.swf.trace
new file mode 100644
index 0000000..62d6c89
--- /dev/null
+++ b/test/trace/scope-chain-what-is-8.swf.trace
@@ -0,0 +1,3 @@
+6
+5
+4
diff --git a/test/trace/scope-chain-what-is.as b/test/trace/scope-chain-what-is.as
new file mode 100644
index 0000000..d59fe62
--- /dev/null
+++ b/test/trace/scope-chain-what-is.as
@@ -0,0 +1,16 @@
+// makeswf -v 7 -s 200x150 -r 1 -o scope-chain-what-is.swf scope-chain-what-is.as
+// taken with permission from http://www.timotheegroleau.com/Flash/articles/scope_chain.htm
+
+_global.a = 4;
+a = 5;
+obj = new Object();
+obj.a = 6;
+with(obj) {
+  trace(a); // 6
+  delete a;
+  trace(a); // 5
+  delete a;
+  trace(a); // 4
+};
+
+loadMovie ("FSCommand:quit", "");
diff --git a/test/trace/scope-chain-with-and-scope-chain-5.swf b/test/trace/scope-chain-with-and-scope-chain-5.swf
new file mode 100644
index 0000000..e155281
Binary files /dev/null and b/test/trace/scope-chain-with-and-scope-chain-5.swf differ
diff --git a/test/trace/scope-chain-with-and-scope-chain-5.swf.trace b/test/trace/scope-chain-with-and-scope-chain-5.swf.trace
new file mode 100644
index 0000000..3233477
--- /dev/null
+++ b/test/trace/scope-chain-with-and-scope-chain-5.swf.trace
@@ -0,0 +1,2 @@
+5
+undefined
diff --git a/test/trace/scope-chain-with-and-scope-chain-6.swf b/test/trace/scope-chain-with-and-scope-chain-6.swf
new file mode 100644
index 0000000..9b6988e
Binary files /dev/null and b/test/trace/scope-chain-with-and-scope-chain-6.swf differ
diff --git a/test/trace/scope-chain-with-and-scope-chain-6.swf.trace b/test/trace/scope-chain-with-and-scope-chain-6.swf.trace
new file mode 100644
index 0000000..fd3c81a
--- /dev/null
+++ b/test/trace/scope-chain-with-and-scope-chain-6.swf.trace
@@ -0,0 +1,2 @@
+5
+5
diff --git a/test/trace/scope-chain-with-and-scope-chain-7.swf b/test/trace/scope-chain-with-and-scope-chain-7.swf
new file mode 100644
index 0000000..549a80a
Binary files /dev/null and b/test/trace/scope-chain-with-and-scope-chain-7.swf differ
diff --git a/test/trace/scope-chain-with-and-scope-chain-7.swf.trace b/test/trace/scope-chain-with-and-scope-chain-7.swf.trace
new file mode 100644
index 0000000..fd3c81a
--- /dev/null
+++ b/test/trace/scope-chain-with-and-scope-chain-7.swf.trace
@@ -0,0 +1,2 @@
+5
+5
diff --git a/test/trace/scope-chain-with-and-scope-chain-8.swf b/test/trace/scope-chain-with-and-scope-chain-8.swf
new file mode 100644
index 0000000..81ff4eb
Binary files /dev/null and b/test/trace/scope-chain-with-and-scope-chain-8.swf differ
diff --git a/test/trace/scope-chain-with-and-scope-chain-8.swf.trace b/test/trace/scope-chain-with-and-scope-chain-8.swf.trace
new file mode 100644
index 0000000..fd3c81a
--- /dev/null
+++ b/test/trace/scope-chain-with-and-scope-chain-8.swf.trace
@@ -0,0 +1,2 @@
+5
+5
diff --git a/test/trace/scope-chain-with-and-scope-chain.as b/test/trace/scope-chain-with-and-scope-chain.as
new file mode 100644
index 0000000..43baa36
--- /dev/null
+++ b/test/trace/scope-chain-with-and-scope-chain.as
@@ -0,0 +1,14 @@
+// makeswf -v 7 -s 200x150 -r 1 -o scope-chain-with-and-scope-chain.swf scope-chain-with-and-scope-chain.as
+// taken with permission from http://www.timotheegroleau.com/Flash/articles/scope_chain.htm
+
+o1 = {a:5};
+o2 = {};
+with (o1) {
+  trace(a); // 5
+  o2.aMethod = function() {
+    trace(a);
+  };
+};
+o2.aMethod(); // undefined
+
+loadMovie ("FSCommand:quit", "");
diff-tree 87e4fa70d0d8cb93ec124fe97e5781794a8a2d7e (from ef4b8c89c3e50cdd36402301e9aad38270accf24)
Author: Benjamin Otte <otte at gnome.org>
Date:   Thu Sep 13 20:42:54 2007 +0200

    it's better to initialize correctly than to delete later ;)

diff --git a/libswfdec/swfdec_as_function.c b/libswfdec/swfdec_as_function.c
index b00f765..6cc40a4 100644
--- a/libswfdec/swfdec_as_function.c
+++ b/libswfdec/swfdec_as_function.c
@@ -242,16 +242,15 @@ swfdec_as_function_init_context (SwfdecA
   proto = swfdec_as_object_new_empty (context);
   if (!proto)
     return;
-  context->Function_prototype = proto;
+  if (version > 5)
+    context->Function_prototype = proto;
   SWFDEC_AS_VALUE_SET_OBJECT (&val, proto);
-  swfdec_as_object_set_variable_and_flags (function, SWFDEC_AS_STR___proto__,
-      &val, SWFDEC_AS_VARIABLE_HIDDEN | SWFDEC_AS_VARIABLE_PERMANENT);
   swfdec_as_object_set_variable_and_flags (function, SWFDEC_AS_STR_prototype,
       &val, SWFDEC_AS_VARIABLE_HIDDEN | SWFDEC_AS_VARIABLE_PERMANENT);
+  swfdec_as_object_set_variable_and_flags (function, SWFDEC_AS_STR___proto__,
+      &val, SWFDEC_AS_VARIABLE_HIDDEN | SWFDEC_AS_VARIABLE_PERMANENT);
   SWFDEC_AS_VALUE_SET_OBJECT (&val, function);
   swfdec_as_object_set_variable_and_flags (proto, SWFDEC_AS_STR_constructor,
       &val, SWFDEC_AS_VARIABLE_HIDDEN | SWFDEC_AS_VARIABLE_PERMANENT);
-  if (version <= 5)
-    context->Function_prototype = NULL;
 }
 


More information about the Swfdec mailing list