Pekka Lampila
2007-Dec-20 16:27 UTC
[Swfdec] 13 commits - libswfdec/swfdec_as_array.c libswfdec/swfdec_xml.c libswfdec/swfdec_xml_node.c test/trace
libswfdec/swfdec_as_array.c | 88 +- libswfdec/swfdec_xml.c | 17 libswfdec/swfdec_xml_node.c | 23 test/trace/Makefile.am | 28 test/trace/array-no-object-5.swf |binary test/trace/array-no-object-5.swf.trace | 14 test/trace/array-no-object-6.swf |binary test/trace/array-no-object-6.swf.trace | 14 test/trace/array-no-object-7.swf |binary test/trace/array-no-object-7.swf.trace | 14 test/trace/array-no-object-8.swf |binary test/trace/array-no-object-8.swf.trace | 14 test/trace/array-no-object.as | 29 test/trace/array-sort-on-5.swf |binary test/trace/array-sort-on-5.swf.trace | 5 test/trace/array-sort-on-6.swf |binary test/trace/array-sort-on-6.swf.trace | 5 test/trace/array-sort-on-7.swf |binary test/trace/array-sort-on-7.swf.trace | 5 test/trace/array-sort-on-8.swf |binary test/trace/array-sort-on-8.swf.trace | 5 test/trace/array-sort-on.as | 30 test/trace/array2-5.swf |binary test/trace/array2-5.swf.trace | 1095 ++++++++++++++-------------- test/trace/array2-6.swf |binary test/trace/array2-6.swf.trace | 29 test/trace/array2-7.swf |binary test/trace/array2-7.swf.trace | 29 test/trace/array2-8.swf |binary test/trace/array2-8.swf.trace | 29 test/trace/array2.as | 50 + test/trace/xml-errors-5.swf |binary test/trace/xml-errors-5.swf.trace | 24 test/trace/xml-errors-6.swf |binary test/trace/xml-errors-6.swf.trace | 24 test/trace/xml-errors-7.swf |binary test/trace/xml-errors-7.swf.trace | 24 test/trace/xml-errors-8.swf |binary test/trace/xml-errors-8.swf.trace | 84 ++ test/trace/xml-errors.as | 10 test/trace/xml-escape-8.swf |binary test/trace/xml-escape-8.swf.trace | 6 test/trace/xml-init-5.swf |binary test/trace/xml-init-5.swf.trace | 2 test/trace/xml-init-6.swf |binary test/trace/xml-init-6.swf.trace | 2 test/trace/xml-init-7.swf |binary test/trace/xml-init-7.swf.trace | 2 test/trace/xml-init-8.swf |binary test/trace/xml-init-8.swf.trace | 2 test/trace/xml-init.as | 3 test/trace/xml-node-5.swf |binary test/trace/xml-node-5.swf.trace | 99 +- test/trace/xml-node-6.swf |binary test/trace/xml-node-6.swf.trace | 97 +- test/trace/xml-node-7.swf |binary test/trace/xml-node-7.swf.trace | 97 +- test/trace/xml-node-8.swf |binary test/trace/xml-node-8.swf.trace | 660 +++++++++++++++++ test/trace/xml-other-5.swf |binary test/trace/xml-other-5.swf.trace | 384 +++++----- test/trace/xml-other-6.swf |binary test/trace/xml-other-6.swf.trace | 384 +++++----- test/trace/xml-other-7.swf |binary test/trace/xml-other-7.swf.trace | 392 +++++----- test/trace/xml-other-8.swf |binary test/trace/xml-other-8.swf.trace | 1254 +++++++++++++++++++++++++++++++++ test/trace/xml-parse-8.swf |binary test/trace/xml-parse-8.swf.trace | 860 ++++++++++++++++++++++ 69 files changed, 4647 insertions(+), 1286 deletions(-) New commits: commit c37b5932f62f2eadabf3b5b88892e11793cef1fd Author: Pekka Lampila <pekka.lampila at iki.fi> Date: Thu Dec 20 16:53:31 2007 +0200 Improve XML tests Added tests that run on version 8 where missing Expanded xml-errors test Expanded xml-init test diff --git a/test/trace/Makefile.am b/test/trace/Makefile.am index 000b0b2..83df525 100644 --- a/test/trace/Makefile.am +++ b/test/trace/Makefile.am @@ -3075,6 +3075,8 @@ EXTRA_DIST = \ xml-errors-6.swf.trace \ xml-errors-7.swf \ xml-errors-7.swf.trace \ + xml-errors-8.swf \ + xml-errors-8.swf.trace \ xml-escape.as \ xml-escape-5.swf \ xml-escape-5.swf.trace \ @@ -3082,6 +3084,8 @@ EXTRA_DIST = \ xml-escape-6.swf.trace \ xml-escape-7.swf \ xml-escape-7.swf.trace \ + xml-escape-8.swf \ + xml-escape-8.swf.trace \ xml-init.as \ xml-init-5.swf \ xml-init-5.swf.trace \ @@ -3098,6 +3102,8 @@ EXTRA_DIST = \ xml-node-6.swf.trace \ xml-node-7.swf \ xml-node-7.swf.trace \ + xml-node-8.swf \ + xml-node-8.swf.trace \ xml-node-init.as \ xml-node-init-5.swf \ xml-node-init-5.swf.trace \ @@ -3114,11 +3120,15 @@ EXTRA_DIST = \ xml-other-6.swf.trace \ xml-other-7.swf \ xml-other-7.swf.trace \ + xml-other-8.swf \ + xml-other-8.swf.trace \ xml-parse.as \ xml-parse-6.swf \ xml-parse-6.swf.trace \ xml-parse-7.swf \ xml-parse-7.swf.trace \ + xml-parse-8.swf \ + xml-parse-8.swf.trace \ xml-parse-1.xml \ xml-parse-2.xml \ xml-properties.as \ diff --git a/test/trace/xml-errors-5.swf b/test/trace/xml-errors-5.swf index 0099b85..ffaade2 100644 Binary files a/test/trace/xml-errors-5.swf and b/test/trace/xml-errors-5.swf differ diff --git a/test/trace/xml-errors-5.swf.trace b/test/trace/xml-errors-5.swf.trace index fe8c6e9..d621e14 100644 --- a/test/trace/xml-errors-5.swf.trace +++ b/test/trace/xml-errors-5.swf.trace @@ -58,3 +58,27 @@ Testing: <a A='x></a><b/> Testing: <a/><!-- <b/> <a /> -5 +Testing: <>a + +-6 +Testing: </>a + +-6 +Testing: <a + +-6 +Testing: <a/ + +-6 +Testing: </a + +-6 +Testing: </a b='c' + +-6 +Testing: <a b='c' + +-6 +Testing: <a ='b'/> + +-6 diff --git a/test/trace/xml-errors-6.swf b/test/trace/xml-errors-6.swf index 1b741a9..97c8d47 100644 Binary files a/test/trace/xml-errors-6.swf and b/test/trace/xml-errors-6.swf differ diff --git a/test/trace/xml-errors-6.swf.trace b/test/trace/xml-errors-6.swf.trace index fe8c6e9..d621e14 100644 --- a/test/trace/xml-errors-6.swf.trace +++ b/test/trace/xml-errors-6.swf.trace @@ -58,3 +58,27 @@ Testing: <a A='x></a><b/> Testing: <a/><!-- <b/> <a /> -5 +Testing: <>a + +-6 +Testing: </>a + +-6 +Testing: <a + +-6 +Testing: <a/ + +-6 +Testing: </a + +-6 +Testing: </a b='c' + +-6 +Testing: <a b='c' + +-6 +Testing: <a ='b'/> + +-6 diff --git a/test/trace/xml-errors-7.swf b/test/trace/xml-errors-7.swf index c7a4152..ad75ef6 100644 Binary files a/test/trace/xml-errors-7.swf and b/test/trace/xml-errors-7.swf differ diff --git a/test/trace/xml-errors-7.swf.trace b/test/trace/xml-errors-7.swf.trace index fe8c6e9..d621e14 100644 --- a/test/trace/xml-errors-7.swf.trace +++ b/test/trace/xml-errors-7.swf.trace @@ -58,3 +58,27 @@ Testing: <a A='x></a><b/> Testing: <a/><!-- <b/> <a /> -5 +Testing: <>a + +-6 +Testing: </>a + +-6 +Testing: <a + +-6 +Testing: <a/ + +-6 +Testing: </a + +-6 +Testing: </a b='c' + +-6 +Testing: <a b='c' + +-6 +Testing: <a ='b'/> + +-6 diff --git a/test/trace/xml-errors-8.swf b/test/trace/xml-errors-8.swf new file mode 100644 index 0000000..db7740b Binary files /dev/null and b/test/trace/xml-errors-8.swf differ diff --git a/test/trace/xml-errors-8.swf.trace b/test/trace/xml-errors-8.swf.trace new file mode 100644 index 0000000..d621e14 --- /dev/null +++ b/test/trace/xml-errors-8.swf.trace @@ -0,0 +1,84 @@ +Testing: <a><b/></a> +<a><b /></a> +0 +Testing: <a/><?xml A +<a /> +-3 +Testing: <a/><?xml A ?><b/><?xml B +<?xml A ?><a /><b /> +-3 +Testing: <a/><!DOCTYPE A +<a /> +-4 +Testing: <a/><!DOCTYPE A><b/><!DOCTYPE B +<!DOCTYPE A><a /><b /> +-4 +Testing: <a> +<a /> +-9 +Testing: <a><b><c/></a> +<a><b><c /></b></a> +-9 +Testing: <b><c/></a> +<b><c /></b> +-10 +Testing: <a><b></a><c/> +<a><b /></a> +-9 +Testing: <a><b></c><d/></b></a> +<a><b /></a> +-10 +Testing: </a> + +-10 +Testing: <a></b><c/></a> +<a /> +-10 +Testing: <a></b></a><c/> +<a /> +-10 +Testing: <a/ ></a/> +<a/ /> +-10 +Testing: <a>&</a> +<a>&</a> +0 +Testing: <a A='&'/> +<a A="&" /> +0 +Testing: <a A/><b/> + +-6 +Testing: <a A=x></a><b/> + +-6 +Testing: <a A='x></a><b/> + +-8 +Testing: <a/><!-- <b/> +<a /> +-5 +Testing: <>a + +-6 +Testing: </>a + +-6 +Testing: <a + +-6 +Testing: <a/ + +-6 +Testing: </a + +-6 +Testing: </a b='c' + +-6 +Testing: <a b='c' + +-6 +Testing: <a ='b'/> + +-6 diff --git a/test/trace/xml-errors.as b/test/trace/xml-errors.as index da3d191..368e34e 100644 --- a/test/trace/xml-errors.as +++ b/test/trace/xml-errors.as @@ -20,7 +20,15 @@ var tests = [ "<a A/><b/>", // invalid attributes "<a A=x></a><b/>", "<a A='x></a><b/>", - "<a/><!-- <b/>" // comment not closed + "<a/><!-- <b/>", // comment not closed + "<>a", // empty tag + "</>a", + "<a", // non terminated tag + "<a/", + "</a", + "</a b='c'", + "<a b='c'", + "<a ='b'/>" // empty attribute ]; for (var i = 0; i < tests.length; i++) { diff --git a/test/trace/xml-escape-8.swf b/test/trace/xml-escape-8.swf new file mode 100644 index 0000000..800eaa3 Binary files /dev/null and b/test/trace/xml-escape-8.swf differ diff --git a/test/trace/xml-escape-8.swf.trace b/test/trace/xml-escape-8.swf.trace new file mode 100644 index 0000000..2a18abc --- /dev/null +++ b/test/trace/xml-escape-8.swf.trace @@ -0,0 +1,6 @@ +t"'e&s;:''at +te&lt;st +undefined +ma'ny +hmm&amp;hrr +non breaking space: ?? diff --git a/test/trace/xml-init-5.swf b/test/trace/xml-init-5.swf index e91b01f..83678fb 100644 Binary files a/test/trace/xml-init-5.swf and b/test/trace/xml-init-5.swf differ diff --git a/test/trace/xml-init-5.swf.trace b/test/trace/xml-init-5.swf.trace index 97f3544..8851e73 100644 --- a/test/trace/xml-init-5.swf.trace +++ b/test/trace/xml-init-5.swf.trace @@ -1,3 +1,5 @@ Check when XML's native properties are initialized undefined undefined +undefined +undefined diff --git a/test/trace/xml-init-6.swf b/test/trace/xml-init-6.swf index d201c57..f8d6fce 100644 Binary files a/test/trace/xml-init-6.swf and b/test/trace/xml-init-6.swf differ diff --git a/test/trace/xml-init-6.swf.trace b/test/trace/xml-init-6.swf.trace index f5be65a..5a9395c 100644 --- a/test/trace/xml-init-6.swf.trace +++ b/test/trace/xml-init-6.swf.trace @@ -1,3 +1,5 @@ Check when XML's native properties are initialized false true +undefined +false diff --git a/test/trace/xml-init-7.swf b/test/trace/xml-init-7.swf index 90c0127..2718d7b 100644 Binary files a/test/trace/xml-init-7.swf and b/test/trace/xml-init-7.swf differ diff --git a/test/trace/xml-init-7.swf.trace b/test/trace/xml-init-7.swf.trace index f5be65a..5a9395c 100644 --- a/test/trace/xml-init-7.swf.trace +++ b/test/trace/xml-init-7.swf.trace @@ -1,3 +1,5 @@ Check when XML's native properties are initialized false true +undefined +false diff --git a/test/trace/xml-init-8.swf b/test/trace/xml-init-8.swf index 583a4e7..c3cfbfc 100644 Binary files a/test/trace/xml-init-8.swf and b/test/trace/xml-init-8.swf differ diff --git a/test/trace/xml-init-8.swf.trace b/test/trace/xml-init-8.swf.trace index f5be65a..5a9395c 100644 --- a/test/trace/xml-init-8.swf.trace +++ b/test/trace/xml-init-8.swf.trace @@ -1,3 +1,5 @@ Check when XML's native properties are initialized false true +undefined +false diff --git a/test/trace/xml-init.as b/test/trace/xml-init.as index aca54db..f87243a 100644 --- a/test/trace/xml-init.as +++ b/test/trace/xml-init.as @@ -15,5 +15,8 @@ trace ("Check when XML's native properties are initialized"); check_and_reset (); var tmp = new XML (); check_and_reset (); +var tmp = _global.XML; +trace (tmp ()); +check_and_reset (); loadMovie ("FSCommand:quit", ""); diff --git a/test/trace/xml-node-5.swf b/test/trace/xml-node-5.swf index cd16455..f86c7c3 100644 Binary files a/test/trace/xml-node-5.swf and b/test/trace/xml-node-5.swf differ diff --git a/test/trace/xml-node-5.swf.trace b/test/trace/xml-node-5.swf.trace index 801ebec..eb42aef 100644 --- a/test/trace/xml-node-5.swf.trace +++ b/test/trace/xml-node-5.swf.trace @@ -24,16 +24,17 @@ valueOf called with 19: valueOf! 20: valueOf! 21: valueOf! -21: toString! 22: valueOf! +22: toString! 23: valueOf! -23: toString! 24: valueOf! 24: toString! 25: valueOf! 25: toString! 26: valueOf! 26: toString! +27: valueOf! +27: toString! <root><a /><b />c<d /></root> <a />,<b />,c,<d /> <a />,<b />,c,<d />,fake @@ -166,6 +167,9 @@ true _level0 _level0 +???????????? + +???????????? _level0 _level0 @@ -270,9 +274,9 @@ _level0 _level0 20: toString! -[type Object] +???????????? -[type Object] +???????????? 21: toString! [type Object] @@ -297,6 +301,10 @@ _level0 [type Object] [type Object] +27: toString! +[type Object] + +[type Object] nsa null nsdefault_at_child @@ -415,226 +423,237 @@ Creating with: (19) _level0 (string) <_level0 /> _level0 value -Creating with: (20) _level0 (movieclip) +Creating with: (20) ???????????? (string) +<???????????? /> +???????????? +value +Creating with: (21) _level0 (movieclip) <_level0 /> _level0 value -Creating with: (21) [object Object] (object) +Creating with: (22) [object Object] (object) <[object Object] /> [object Object] value -Creating with: (22) (undefined) +Creating with: (23) (undefined) [type Object] [type Object] [type Object] -Creating with: (23) [type Object] (object) +Creating with: (24) [type Object] (object) toString called <[type Object] /> toString called [type Object] valueOf called value -Creating with: (24) [type Object] (object) +Creating with: (25) [type Object] (object) toString called with <[type Object] /> toString called with [type Object] value -Creating with: (25) [object Object] (object) +Creating with: (26) [object Object] (object) <[object Object] /> [object Object] valueOf called with value -Creating with: (26) (object) +Creating with: (27) (object) <[type Object] /> [type Object] value -Creating with: (27) (object) +Creating with: (28) (object) 0: toString! <[type Object] /> 0: toString! [type Object] 0: valueOf! value -Creating with: (28) null (object) +Creating with: (29) null (object) 1: toString! <[type Object] /> 1: toString! [type Object] 1: valueOf! value -Creating with: (29) true (object) +Creating with: (30) true (object) 2: toString! <[type Object] /> 2: toString! [type Object] 2: valueOf! <value /> -Creating with: (30) false (object) +Creating with: (31) false (object) 3: toString! <[type Object] /> 3: toString! [type Object] 3: valueOf! value -Creating with: (31) 0 (object) +Creating with: (32) 0 (object) 4: toString! <[type Object] /> 4: toString! [type Object] 4: valueOf! value -Creating with: (32) 1 (object) +Creating with: (33) 1 (object) 5: toString! <[type Object] /> 5: toString! [type Object] 5: valueOf! <value /> -Creating with: (33) 0.5 (object) +Creating with: (34) 0.5 (object) 6: toString! <[type Object] /> 6: toString! [type Object] 6: valueOf! value -Creating with: (34) -1 (object) +Creating with: (35) -1 (object) 7: toString! <[type Object] /> 7: toString! [type Object] 7: valueOf! value -Creating with: (35) -0.5 (object) +Creating with: (36) -0.5 (object) 8: toString! <[type Object] /> 8: toString! [type Object] 8: valueOf! value -Creating with: (36) Infinity (object) +Creating with: (37) Infinity (object) 9: toString! <[type Object] /> 9: toString! [type Object] 9: valueOf! value -Creating with: (37) -Infinity (object) +Creating with: (38) -Infinity (object) 10: toString! <[type Object] /> 10: toString! [type Object] 10: valueOf! value -Creating with: (38) NaN (object) +Creating with: (39) NaN (object) 11: toString! <[type Object] /> 11: toString! [type Object] 11: valueOf! value -Creating with: (39) (object) +Creating with: (40) (object) 12: toString! < /> 12: toString! 12: valueOf! value -Creating with: (40) 0 (object) +Creating with: (41) 0 (object) 13: toString! <0 /> 13: toString! 0 13: valueOf! value -Creating with: (41) -0 (object) +Creating with: (42) -0 (object) 14: toString! <-0 /> 14: toString! -0 14: valueOf! value -Creating with: (42) 0.0 (object) +Creating with: (43) 0.0 (object) 15: toString! <0.0 /> 15: toString! 0.0 15: valueOf! value -Creating with: (43) 1 (object) +Creating with: (44) 1 (object) 16: toString! <1 /> 16: toString! 1 16: valueOf! <value /> -Creating with: (44) Hello World! (object) +Creating with: (45) Hello World! (object) 17: toString! <Hello World! /> 17: toString! Hello World! 17: valueOf! value -Creating with: (45) true (object) +Creating with: (46) true (object) 18: toString! <true /> 18: toString! true 18: valueOf! value -Creating with: (46) _level0 (object) +Creating with: (47) _level0 (object) 19: toString! <_level0 /> 19: toString! _level0 19: valueOf! value -Creating with: (47) _level0 (object) +Creating with: (48) ???????????? (object) 20: toString! -<[type Object] /> +<???????????? /> 20: toString! -[type Object] +???????????? 20: valueOf! value -Creating with: (48) [type Object] (object) +Creating with: (49) _level0 (object) 21: toString! <[type Object] /> 21: toString! [type Object] 21: valueOf! value -Creating with: (49) (object) +Creating with: (50) [type Object] (object) 22: toString! <[type Object] /> 22: toString! [type Object] 22: valueOf! value -Creating with: (50) [type Object] (object) +Creating with: (51) (object) 23: toString! <[type Object] /> 23: toString! [type Object] 23: valueOf! value -Creating with: (51) [type Object] (object) +Creating with: (52) [type Object] (object) 24: toString! <[type Object] /> 24: toString! [type Object] 24: valueOf! value -Creating with: (52) [type Object] (object) +Creating with: (53) [type Object] (object) 25: toString! <[type Object] /> 25: toString! [type Object] 25: valueOf! value -Creating with: (53) [type Object] (object) +Creating with: (54) [type Object] (object) 26: toString! <[type Object] /> 26: toString! [type Object] 26: valueOf! value +Creating with: (55) [type Object] (object) +27: toString! +<[type Object] /> +27: toString! +[type Object] +27: valueOf! +value diff --git a/test/trace/xml-node-6.swf b/test/trace/xml-node-6.swf index d559b58..4cd44fb 100644 Binary files a/test/trace/xml-node-6.swf and b/test/trace/xml-node-6.swf differ diff --git a/test/trace/xml-node-6.swf.trace b/test/trace/xml-node-6.swf.trace index 539af0e..ec9c7ba 100644 --- a/test/trace/xml-node-6.swf.trace +++ b/test/trace/xml-node-6.swf.trace @@ -24,7 +24,6 @@ valueOf called with 19: valueOf! 20: valueOf! 21: valueOf! -21: toString! 22: valueOf! 22: toString! 23: valueOf! @@ -35,6 +34,8 @@ valueOf called with 25: toString! 26: valueOf! 26: toString! +27: valueOf! +27: toString! <root><a /><b />c<d /></root> <a />,<b />,c,<d /> <a />,<b />,c,<d />,fake @@ -167,6 +168,9 @@ true _level0 _level0 +?????? + +?????? _level0 _level0 @@ -271,9 +275,9 @@ _level0 _level0 20: toString! -[type Object] +?????? -[type Object] +?????? 21: toString! [type Object] @@ -298,6 +302,10 @@ _level0 [type Object] [type Object] +27: toString! +[type Object] + +[type Object] nsa null nsdefault_at_child @@ -416,226 +424,237 @@ Creating with: (19) _level0 (string) <_level0 /> _level0 value -Creating with: (20) _level0 (movieclip) +Creating with: (20) ?????? (string) +<?????? /> +?????? +value +Creating with: (21) _level0 (movieclip) <_level0 /> _level0 value -Creating with: (21) [object Object] (object) +Creating with: (22) [object Object] (object) <[object Object] /> [object Object] value -Creating with: (22) [type Function] (function) +Creating with: (23) [type Function] (function) <[type Function] /> [type Function] value -Creating with: (23) [type Object] (object) +Creating with: (24) [type Object] (object) toString called <[type Object] /> toString called [type Object] valueOf called value -Creating with: (24) [type Object] (object) +Creating with: (25) [type Object] (object) toString called with <[type Object] /> toString called with [type Object] value -Creating with: (25) [object Object] (object) +Creating with: (26) [object Object] (object) <[object Object] /> [object Object] valueOf called with value -Creating with: (26) (object) +Creating with: (27) (object) <[type Object] /> [type Object] value -Creating with: (27) (object) +Creating with: (28) (object) 0: toString! <[type Object] /> 0: toString! [type Object] 0: valueOf! value -Creating with: (28) null (object) +Creating with: (29) null (object) 1: toString! <[type Object] /> 1: toString! [type Object] 1: valueOf! value -Creating with: (29) true (object) +Creating with: (30) true (object) 2: toString! <[type Object] /> 2: toString! [type Object] 2: valueOf! <value /> -Creating with: (30) false (object) +Creating with: (31) false (object) 3: toString! <[type Object] /> 3: toString! [type Object] 3: valueOf! value -Creating with: (31) 0 (object) +Creating with: (32) 0 (object) 4: toString! <[type Object] /> 4: toString! [type Object] 4: valueOf! value -Creating with: (32) 1 (object) +Creating with: (33) 1 (object) 5: toString! <[type Object] /> 5: toString! [type Object] 5: valueOf! <value /> -Creating with: (33) 0.5 (object) +Creating with: (34) 0.5 (object) 6: toString! <[type Object] /> 6: toString! [type Object] 6: valueOf! value -Creating with: (34) -1 (object) +Creating with: (35) -1 (object) 7: toString! <[type Object] /> 7: toString! [type Object] 7: valueOf! value -Creating with: (35) -0.5 (object) +Creating with: (36) -0.5 (object) 8: toString! <[type Object] /> 8: toString! [type Object] 8: valueOf! value -Creating with: (36) Infinity (object) +Creating with: (37) Infinity (object) 9: toString! <[type Object] /> 9: toString! [type Object] 9: valueOf! value -Creating with: (37) -Infinity (object) +Creating with: (38) -Infinity (object) 10: toString! <[type Object] /> 10: toString! [type Object] 10: valueOf! value -Creating with: (38) NaN (object) +Creating with: (39) NaN (object) 11: toString! <[type Object] /> 11: toString! [type Object] 11: valueOf! value -Creating with: (39) (object) +Creating with: (40) (object) 12: toString! < /> 12: toString! 12: valueOf! value -Creating with: (40) 0 (object) +Creating with: (41) 0 (object) 13: toString! <0 /> 13: toString! 0 13: valueOf! value -Creating with: (41) -0 (object) +Creating with: (42) -0 (object) 14: toString! <-0 /> 14: toString! -0 14: valueOf! value -Creating with: (42) 0.0 (object) +Creating with: (43) 0.0 (object) 15: toString! <0.0 /> 15: toString! 0.0 15: valueOf! value -Creating with: (43) 1 (object) +Creating with: (44) 1 (object) 16: toString! <1 /> 16: toString! 1 16: valueOf! <value /> -Creating with: (44) Hello World! (object) +Creating with: (45) Hello World! (object) 17: toString! <Hello World! /> 17: toString! Hello World! 17: valueOf! value -Creating with: (45) true (object) +Creating with: (46) true (object) 18: toString! <true /> 18: toString! true 18: valueOf! value -Creating with: (46) _level0 (object) +Creating with: (47) _level0 (object) 19: toString! <_level0 /> 19: toString! _level0 19: valueOf! value -Creating with: (47) _level0 (object) +Creating with: (48) ?????? (object) 20: toString! -<[type Object] /> +<?????? /> 20: toString! -[type Object] +?????? 20: valueOf! value -Creating with: (48) [type Object] (object) +Creating with: (49) _level0 (object) 21: toString! <[type Object] /> 21: toString! [type Object] 21: valueOf! value -Creating with: (49) [type Object] (object) +Creating with: (50) [type Object] (object) 22: toString! <[type Object] /> 22: toString! [type Object] 22: valueOf! value -Creating with: (50) [type Object] (object) +Creating with: (51) [type Object] (object) 23: toString! <[type Object] /> 23: toString! [type Object] 23: valueOf! value -Creating with: (51) [type Object] (object) +Creating with: (52) [type Object] (object) 24: toString! <[type Object] /> 24: toString! [type Object] 24: valueOf! value -Creating with: (52) [type Object] (object) +Creating with: (53) [type Object] (object) 25: toString! <[type Object] /> 25: toString! [type Object] 25: valueOf! value -Creating with: (53) [type Object] (object) +Creating with: (54) [type Object] (object) 26: toString! <[type Object] /> 26: toString! [type Object] 26: valueOf! value +Creating with: (55) [type Object] (object) +27: toString! +<[type Object] /> +27: toString! +[type Object] +27: valueOf! +value diff --git a/test/trace/xml-node-7.swf b/test/trace/xml-node-7.swf index cd12a80..7468261 100644 Binary files a/test/trace/xml-node-7.swf and b/test/trace/xml-node-7.swf differ diff --git a/test/trace/xml-node-7.swf.trace b/test/trace/xml-node-7.swf.trace index 7370418..e7909dc 100644 --- a/test/trace/xml-node-7.swf.trace +++ b/test/trace/xml-node-7.swf.trace @@ -24,7 +24,6 @@ valueOf called with 19: valueOf! 20: valueOf! 21: valueOf! -21: toString! 22: valueOf! 22: toString! 23: valueOf! @@ -35,6 +34,8 @@ valueOf called with 25: toString! 26: valueOf! 26: toString! +27: valueOf! +27: toString! <root><a /><b />c<d /></root> <a />,<b />,c,<d /> <a />,<b />,c,<d />,fake @@ -167,6 +168,9 @@ true _level0 _level0 +?????? + +?????? _level0 _level0 @@ -271,9 +275,9 @@ _level0 _level0 20: toString! -[type Object] +?????? -[type Object] +?????? 21: toString! [type Object] @@ -298,6 +302,10 @@ _level0 [type Object] [type Object] +27: toString! +[type Object] + +[type Object] nsa null nsdefault_at_child @@ -416,226 +424,237 @@ Creating with: (19) _level0 (string) <_level0 /> _level0 value -Creating with: (20) _level0 (movieclip) +Creating with: (20) ?????? (string) +<?????? /> +?????? +value +Creating with: (21) _level0 (movieclip) <_level0 /> _level0 value -Creating with: (21) [object Object] (object) +Creating with: (22) [object Object] (object) <[object Object] /> [object Object] value -Creating with: (22) [type Function] (function) +Creating with: (23) [type Function] (function) <[type Function] /> [type Function] value -Creating with: (23) [type Object] (object) +Creating with: (24) [type Object] (object) toString called <[type Object] /> toString called [type Object] valueOf called value -Creating with: (24) [type Object] (object) +Creating with: (25) [type Object] (object) toString called with <[type Object] /> toString called with [type Object] value -Creating with: (25) [object Object] (object) +Creating with: (26) [object Object] (object) <[object Object] /> [object Object] valueOf called with value -Creating with: (26) undefined (object) +Creating with: (27) undefined (object) <[type Object] /> [type Object] value -Creating with: (27) undefined (object) +Creating with: (28) undefined (object) 0: toString! <[type Object] /> 0: toString! [type Object] 0: valueOf! value -Creating with: (28) null (object) +Creating with: (29) null (object) 1: toString! <[type Object] /> 1: toString! [type Object] 1: valueOf! value -Creating with: (29) true (object) +Creating with: (30) true (object) 2: toString! <[type Object] /> 2: toString! [type Object] 2: valueOf! <value /> -Creating with: (30) false (object) +Creating with: (31) false (object) 3: toString! <[type Object] /> 3: toString! [type Object] 3: valueOf! value -Creating with: (31) 0 (object) +Creating with: (32) 0 (object) 4: toString! <[type Object] /> 4: toString! [type Object] 4: valueOf! value -Creating with: (32) 1 (object) +Creating with: (33) 1 (object) 5: toString! <[type Object] /> 5: toString! [type Object] 5: valueOf! <value /> -Creating with: (33) 0.5 (object) +Creating with: (34) 0.5 (object) 6: toString! <[type Object] /> 6: toString! [type Object] 6: valueOf! value -Creating with: (34) -1 (object) +Creating with: (35) -1 (object) 7: toString! <[type Object] /> 7: toString! [type Object] 7: valueOf! value -Creating with: (35) -0.5 (object) +Creating with: (36) -0.5 (object) 8: toString! <[type Object] /> 8: toString! [type Object] 8: valueOf! value -Creating with: (36) Infinity (object) +Creating with: (37) Infinity (object) 9: toString! <[type Object] /> 9: toString! [type Object] 9: valueOf! value -Creating with: (37) -Infinity (object) +Creating with: (38) -Infinity (object) 10: toString! <[type Object] /> 10: toString! [type Object] 10: valueOf! value -Creating with: (38) NaN (object) +Creating with: (39) NaN (object) 11: toString! <[type Object] /> 11: toString! [type Object] 11: valueOf! value -Creating with: (39) (object) +Creating with: (40) (object) 12: toString! < /> 12: toString! 12: valueOf! value -Creating with: (40) 0 (object) +Creating with: (41) 0 (object) 13: toString! <0 /> 13: toString! 0 13: valueOf! value -Creating with: (41) -0 (object) +Creating with: (42) -0 (object) 14: toString! <-0 /> 14: toString! -0 14: valueOf! value -Creating with: (42) 0.0 (object) +Creating with: (43) 0.0 (object) 15: toString! <0.0 /> 15: toString! 0.0 15: valueOf! value -Creating with: (43) 1 (object) +Creating with: (44) 1 (object) 16: toString! <1 /> 16: toString! 1 16: valueOf! <value /> -Creating with: (44) Hello World! (object) +Creating with: (45) Hello World! (object) 17: toString! <Hello World! /> 17: toString! Hello World! 17: valueOf! value -Creating with: (45) true (object) +Creating with: (46) true (object) 18: toString! <true /> 18: toString! true 18: valueOf! value -Creating with: (46) _level0 (object) +Creating with: (47) _level0 (object) 19: toString! <_level0 /> 19: toString! _level0 19: valueOf! value -Creating with: (47) _level0 (object) +Creating with: (48) ?????? (object) 20: toString! -<[type Object] /> +<?????? /> 20: toString! -[type Object] +?????? 20: valueOf! value -Creating with: (48) [type Object] (object) +Creating with: (49) _level0 (object) 21: toString! <[type Object] /> 21: toString! [type Object] 21: valueOf! value -Creating with: (49) [type Object] (object) +Creating with: (50) [type Object] (object) 22: toString! <[type Object] /> 22: toString! [type Object] 22: valueOf! value -Creating with: (50) [type Object] (object) +Creating with: (51) [type Object] (object) 23: toString! <[type Object] /> 23: toString! [type Object] 23: valueOf! value -Creating with: (51) [type Object] (object) +Creating with: (52) [type Object] (object) 24: toString! <[type Object] /> 24: toString! [type Object] 24: valueOf! value -Creating with: (52) [type Object] (object) +Creating with: (53) [type Object] (object) 25: toString! <[type Object] /> 25: toString! [type Object] 25: valueOf! value -Creating with: (53) [type Object] (object) +Creating with: (54) [type Object] (object) 26: toString! <[type Object] /> 26: toString! [type Object] 26: valueOf! value +Creating with: (55) [type Object] (object) +27: toString! +<[type Object] /> +27: toString! +[type Object] +27: valueOf! +value diff --git a/test/trace/xml-node-8.swf b/test/trace/xml-node-8.swf new file mode 100644 index 0000000..fd31c1a Binary files /dev/null and b/test/trace/xml-node-8.swf differ diff --git a/test/trace/xml-node-8.swf.trace b/test/trace/xml-node-8.swf.trace new file mode 100644 index 0000000..0377d98 --- /dev/null +++ b/test/trace/xml-node-8.swf.trace @@ -0,0 +1,660 @@ +valueOf called +toString called +toString called with +valueOf called with +0: valueOf! +1: valueOf! +2: valueOf! +3: valueOf! +4: valueOf! +5: valueOf! +6: valueOf! +7: valueOf! +8: valueOf! +9: valueOf! +10: valueOf! +11: valueOf! +12: valueOf! +13: valueOf! +14: valueOf! +15: valueOf! +16: valueOf! +17: valueOf! +18: valueOf! +19: valueOf! +20: valueOf! +21: valueOf! +22: valueOf! +22: toString! +23: valueOf! +23: toString! +24: valueOf! +24: toString! +25: valueOf! +25: toString! +26: valueOf! +26: toString! +27: valueOf! +27: toString! +<root><a /><b />c<d /></root> +<a />,<b />,c,<d /> +<a />,<b />,c,<d />,fake +<b />,c,<d /> +<b />,c,<d />,<fake /> +<b />,c,<d />,<e /> +fake,c,<d />,<e /> +<b />,c,<d />,<f />,<e /> +parent +firstchild +lastchild +nextsibling +previoussibling +true +parent +firstchild +lastchild +nextsibling +previoussibling +true +null +null +null +null +null +false +null +null +null +null +null +false + + +<a />,<b />,c,<d /> +<a />,<b />,c,<d /> +a:b +a +b +c:d +c +d +c:d +c +d +c:d +c +d + + + +: + +: +:b + +b +a: + +a: +a::b +a +:b +a:: +a +: +::b + +:b +:: + +: +:: + +: +null + +null +true + +true +false + +false +0 + +0 +1 + +1 +0.5 + +0.5 +-1 + +-1 +-0.5 + +-0.5 +Infinity + +Infinity +-Infinity + +-Infinity +NaN + +NaN + + + +0 + +0 +-0 + +-0 +0.0 + +0.0 +1 + +1 +Hello World! + +Hello World! +true + +true +_level0 + +_level0 +?????? + +?????? +_level0 + +_level0 +[object Object] + +[object Object] +[type Function] + +[type Function] +toString called +[type Object] + +[type Object] +toString called with +[type Object] + +[type Object] +[object Object] + +[object Object] +[type Object] + +[type Object] +0: toString! +[type Object] + +[type Object] +1: toString! +[type Object] + +[type Object] +2: toString! +[type Object] + +[type Object] +3: toString! +[type Object] + +[type Object] +4: toString! +[type Object] + +[type Object] +5: toString! +[type Object] + +[type Object] +6: toString! +[type Object] + +[type Object] +7: toString! +[type Object] + +[type Object] +8: toString! +[type Object] + +[type Object] +9: toString! +[type Object] + +[type Object] +10: toString! +[type Object] + +[type Object] +11: toString! +[type Object] + +[type Object] +12: toString! + + + +13: toString! +0 + +0 +14: toString! +-0 + +-0 +15: toString! +0.0 + +0.0 +16: toString! +1 + +1 +17: toString! +Hello World! + +Hello World! +18: toString! +true + +true +19: toString! +_level0 + +_level0 +20: toString! +?????? + +?????? +21: toString! +[type Object] + +[type Object] +22: toString! +[type Object] + +[type Object] +23: toString! +[type Object] + +[type Object] +24: toString! +[type Object] + +[type Object] +25: toString! +[type Object] + +[type Object] +26: toString! +[type Object] + +[type Object] +27: toString! +[type Object] + +[type Object] +nsa +null +nsdefault_at_child +nsa + +null +nsdefault_at_child +nsa + +null +nsdefault +nsa + +null +nsdefault +nsa +nsa +&=&&a=a&b=b&c=&g=& +&=&&a=a&b=b&c=&d=d&g=& +&=&&a=A&b=b&c=&d=d&g=& +&=&&a=A&c=&d=d&g=& +"="&&=&&&=&&'='&a=A&c=&d=d&g=& +<root><a /><b />c<d /></root> +<root><a /><b />c<d /></root> + +<root><a /><b />c<d /></root> +<root><a /><b />c<d /></root> +<root><a /><b />c<d /></root> +<root><a /><b />c<d /></root> +<root><a /><b />c<f /><d /></root> +<root><a /><b />c<f /><d /><g /></root> +<root><a /><b />c<f /><d /><g /></root> +<root><a /><b />c<f /><d /><g /></root> +g +root +undefined +<name /> +value +Creating with: (0) undefined (undefined) +[type Object] +[type Object] +[type Object] +Creating with: (1) null (null) +<null /> +null +value +Creating with: (2) true (boolean) +<true /> +true +<value /> +Creating with: (3) false (boolean) +<false /> +false +value +Creating with: (4) 0 (number) +<0 /> +0 +value +Creating with: (5) 1 (number) +<1 /> +1 +<value /> +Creating with: (6) 0.5 (number) +<0.5 /> +0.5 +value +Creating with: (7) -1 (number) +<-1 /> +-1 +value +Creating with: (8) -0.5 (number) +<-0.5 /> +-0.5 +value +Creating with: (9) Infinity (number) +<Infinity /> +Infinity +value +Creating with: (10) -Infinity (number) +<-Infinity /> +-Infinity +value +Creating with: (11) NaN (number) +<NaN /> +NaN +value +Creating with: (12) (string) +< /> + +value +Creating with: (13) 0 (string) +<0 /> +0 +value +Creating with: (14) -0 (string) +<-0 /> +-0 +value +Creating with: (15) 0.0 (string) +<0.0 /> +0.0 +value +Creating with: (16) 1 (string) +<1 /> +1 +<value /> +Creating with: (17) Hello World! (string) +<Hello World! /> +Hello World! +value +Creating with: (18) true (string) +<true /> +true +value +Creating with: (19) _level0 (string) +<_level0 /> +_level0 +value +Creating with: (20) ?????? (string) +<?????? /> +?????? +value +Creating with: (21) _level0 (movieclip) +<_level0 /> +_level0 +value +Creating with: (22) [object Object] (object) +<[object Object] /> +[object Object] +value +Creating with: (23) [type Function] (function) +<[type Function] /> +[type Function] +value +Creating with: (24) [type Object] (object) +toString called +<[type Object] /> +toString called +[type Object] +valueOf called +value +Creating with: (25) [type Object] (object) +toString called with +<[type Object] /> +toString called with +[type Object] +value +Creating with: (26) [object Object] (object) +<[object Object] /> +[object Object] +valueOf called with +value +Creating with: (27) undefined (object) +<[type Object] /> +[type Object] +value +Creating with: (28) undefined (object) +0: toString! +<[type Object] /> +0: toString! +[type Object] +0: valueOf! +value +Creating with: (29) null (object) +1: toString! +<[type Object] /> +1: toString! +[type Object] +1: valueOf! +value +Creating with: (30) true (object) +2: toString! +<[type Object] /> +2: toString! +[type Object] +2: valueOf! +<value /> +Creating with: (31) false (object) +3: toString! +<[type Object] /> +3: toString! +[type Object] +3: valueOf! +value +Creating with: (32) 0 (object) +4: toString! +<[type Object] /> +4: toString! +[type Object] +4: valueOf! +value +Creating with: (33) 1 (object) +5: toString! +<[type Object] /> +5: toString! +[type Object] +5: valueOf! +<value /> +Creating with: (34) 0.5 (object) +6: toString! +<[type Object] /> +6: toString! +[type Object] +6: valueOf! +value +Creating with: (35) -1 (object) +7: toString! +<[type Object] /> +7: toString! +[type Object] +7: valueOf! +value +Creating with: (36) -0.5 (object) +8: toString! +<[type Object] /> +8: toString! +[type Object] +8: valueOf! +value +Creating with: (37) Infinity (object) +9: toString! +<[type Object] /> +9: toString! +[type Object] +9: valueOf! +value +Creating with: (38) -Infinity (object) +10: toString! +<[type Object] /> +10: toString! +[type Object] +10: valueOf! +value +Creating with: (39) NaN (object) +11: toString! +<[type Object] /> +11: toString! +[type Object] +11: valueOf! +value +Creating with: (40) (object) +12: toString! +< /> +12: toString! + +12: valueOf! +value +Creating with: (41) 0 (object) +13: toString! +<0 /> +13: toString! +0 +13: valueOf! +value +Creating with: (42) -0 (object) +14: toString! +<-0 /> +14: toString! +-0 +14: valueOf! +value +Creating with: (43) 0.0 (object) +15: toString! +<0.0 /> +15: toString! +0.0 +15: valueOf! +value +Creating with: (44) 1 (object) +16: toString! +<1 /> +16: toString! +1 +16: valueOf! +<value /> +Creating with: (45) Hello World! (object) +17: toString! +<Hello World! /> +17: toString! +Hello World! +17: valueOf! +value +Creating with: (46) true (object) +18: toString! +<true /> +18: toString! +true +18: valueOf! +value +Creating with: (47) _level0 (object) +19: toString! +<_level0 /> +19: toString! +_level0 +19: valueOf! +value +Creating with: (48) ?????? (object) +20: toString! +<?????? /> +20: toString! +?????? +20: valueOf! +value +Creating with: (49) _level0 (object) +21: toString! +<[type Object] /> +21: toString! +[type Object] +21: valueOf! +value +Creating with: (50) [type Object] (object) +22: toString! +<[type Object] /> +22: toString! +[type Object] +22: valueOf! +value +Creating with: (51) [type Object] (object) +23: toString! +<[type Object] /> +23: toString! +[type Object] +23: valueOf! +value +Creating with: (52) [type Object] (object) +24: toString! +<[type Object] /> +24: toString! +[type Object] +24: valueOf! +value +Creating with: (53) [type Object] (object) +25: toString! +<[type Object] /> +25: toString! +[type Object] +25: valueOf! +value +Creating with: (54) [type Object] (object) +26: toString! +<[type Object] /> +26: toString! +[type Object] +26: valueOf! +value +Creating with: (55) [type Object] (object) +27: toString! +<[type Object] /> +27: toString! +[type Object] +27: valueOf! +value diff --git a/test/trace/xml-other-5.swf b/test/trace/xml-other-5.swf index e35cfcb..1c9be7a 100644 Binary files a/test/trace/xml-other-5.swf and b/test/trace/xml-other-5.swf differ diff --git a/test/trace/xml-other-5.swf.trace b/test/trace/xml-other-5.swf.trace index e77c2a0..50b924f 100644 --- a/test/trace/xml-other-5.swf.trace +++ b/test/trace/xml-other-5.swf.trace @@ -24,16 +24,17 @@ valueOf called with 19: valueOf! 20: valueOf! 21: valueOf! -21: toString! 22: valueOf! +22: toString! 23: valueOf! -23: toString! 24: valueOf! 24: toString! 25: valueOf! 25: toString! 26: valueOf! 26: toString! +27: valueOf! +27: toString! <root /> <root /> @@ -77,103 +78,108 @@ Constructing with: (18) true (string) true Constructing with: (19) _level0 (string) _level0 -Constructing with: (20) _level0 (movieclip) +Constructing with: (20) ???????????? (string) +???????????? +Constructing with: (21) _level0 (movieclip) _level0 -Constructing with: (21) [object Object] (object) +Constructing with: (22) [object Object] (object) [object Object] -Constructing with: (22) (undefined) +Constructing with: (23) (undefined) -Constructing with: (23) [type Object] (object) +Constructing with: (24) [type Object] (object) toString called [type Object] -Constructing with: (24) [type Object] (object) +Constructing with: (25) [type Object] (object) toString called with [type Object] -Constructing with: (25) [object Object] (object) +Constructing with: (26) [object Object] (object) [object Object] -Constructing with: (26) (object) -[type Object] Constructing with: (27) (object) +[type Object] +Constructing with: (28) (object) 0: toString! [type Object] -Constructing with: (28) null (object) +Constructing with: (29) null (object) 1: toString! [type Object] -Constructing with: (29) true (object) +Constructing with: (30) true (object) 2: toString! [type Object] -Constructing with: (30) false (object) +Constructing with: (31) false (object) 3: toString! [type Object] -Constructing with: (31) 0 (object) +Constructing with: (32) 0 (object) 4: toString! [type Object] -Constructing with: (32) 1 (object) +Constructing with: (33) 1 (object) 5: toString! [type Object] -Constructing with: (33) 0.5 (object) +Constructing with: (34) 0.5 (object) 6: toString! [type Object] -Constructing with: (34) -1 (object) +Constructing with: (35) -1 (object) 7: toString! [type Object] -Constructing with: (35) -0.5 (object) +Constructing with: (36) -0.5 (object) 8: toString! [type Object] -Constructing with: (36) Infinity (object) +Constructing with: (37) Infinity (object) 9: toString! [type Object] -Constructing with: (37) -Infinity (object) +Constructing with: (38) -Infinity (object) 10: toString! [type Object] -Constructing with: (38) NaN (object) +Constructing with: (39) NaN (object) 11: toString! [type Object] -Constructing with: (39) (object) +Constructing with: (40) (object) 12: toString! -Constructing with: (40) 0 (object) +Constructing with: (41) 0 (object) 13: toString! 0 -Constructing with: (41) -0 (object) +Constructing with: (42) -0 (object) 14: toString! -0 -Constructing with: (42) 0.0 (object) +Constructing with: (43) 0.0 (object) 15: toString! 0.0 -Constructing with: (43) 1 (object) +Constructing with: (44) 1 (object) 16: toString! 1 -Constructing with: (44) Hello World! (object) +Constructing with: (45) Hello World! (object) 17: toString! Hello World! -Constructing with: (45) true (object) +Constructing with: (46) true (object) 18: toString! true -Constructing with: (46) _level0 (object) +Constructing with: (47) _level0 (object) 19: toString! _level0 -Constructing with: (47) _level0 (object) +Constructing with: (48) ???????????? (object) 20: toString! -[type Object] -Constructing with: (48) [type Object] (object) +???????????? +Constructing with: (49) _level0 (object) 21: toString! [type Object] -Constructing with: (49) (object) +Constructing with: (50) [type Object] (object) 22: toString! [type Object] -Constructing with: (50) [type Object] (object) +Constructing with: (51) (object) 23: toString! [type Object] -Constructing with: (51) [type Object] (object) +Constructing with: (52) [type Object] (object) 24: toString! [type Object] -Constructing with: (52) [type Object] (object) +Constructing with: (53) [type Object] (object) 25: toString! [type Object] -Constructing with: (53) [type Object] (object) +Constructing with: (54) [type Object] (object) 26: toString! [type Object] +Constructing with: (55) [type Object] (object) +27: toString! +[type Object] undefined <?xml XML decl ?><!DOCTYPE doctype decl> @@ -250,137 +256,144 @@ true Constructing with: (19) _level0 (string) undefined _level0 -Constructing with: (20) _level0 (movieclip) +Constructing with: (20) ???????????? (string) +undefined +???????????? +Constructing with: (21) _level0 (movieclip) undefined _level0 -Constructing with: (21) [object Object] (object) +Constructing with: (22) [object Object] (object) undefined [object Object] -Constructing with: (22) (undefined) +Constructing with: (23) (undefined) undefined [object Object] -Constructing with: (23) [type Object] (object) +Constructing with: (24) [type Object] (object) toString called undefined [type Object] -Constructing with: (24) [type Object] (object) +Constructing with: (25) [type Object] (object) toString called with undefined [type Object] -Constructing with: (25) [object Object] (object) +Constructing with: (26) [object Object] (object) undefined [object Object] -Constructing with: (26) (object) +Constructing with: (27) (object) undefined [type Object] -Constructing with: (27) (object) +Constructing with: (28) (object) 0: toString! undefined [type Object] -Constructing with: (28) null (object) +Constructing with: (29) null (object) 1: toString! undefined [type Object] -Constructing with: (29) true (object) +Constructing with: (30) true (object) 2: toString! undefined [type Object] -Constructing with: (30) false (object) +Constructing with: (31) false (object) 3: toString! undefined [type Object] -Constructing with: (31) 0 (object) +Constructing with: (32) 0 (object) 4: toString! undefined [type Object] -Constructing with: (32) 1 (object) +Constructing with: (33) 1 (object) 5: toString! undefined [type Object] -Constructing with: (33) 0.5 (object) +Constructing with: (34) 0.5 (object) 6: toString! undefined [type Object] -Constructing with: (34) -1 (object) +Constructing with: (35) -1 (object) 7: toString! undefined [type Object] -Constructing with: (35) -0.5 (object) +Constructing with: (36) -0.5 (object) 8: toString! undefined [type Object] -Constructing with: (36) Infinity (object) +Constructing with: (37) Infinity (object) 9: toString! undefined [type Object] -Constructing with: (37) -Infinity (object) +Constructing with: (38) -Infinity (object) 10: toString! undefined [type Object] -Constructing with: (38) NaN (object) +Constructing with: (39) NaN (object) 11: toString! undefined [type Object] -Constructing with: (39) (object) +Constructing with: (40) (object) 12: toString! undefined -Constructing with: (40) 0 (object) +Constructing with: (41) 0 (object) 13: toString! undefined 0 -Constructing with: (41) -0 (object) +Constructing with: (42) -0 (object) 14: toString! undefined -0 -Constructing with: (42) 0.0 (object) +Constructing with: (43) 0.0 (object) 15: toString! undefined 0.0 -Constructing with: (43) 1 (object) +Constructing with: (44) 1 (object) 16: toString! undefined 1 -Constructing with: (44) Hello World! (object) +Constructing with: (45) Hello World! (object) 17: toString! undefined Hello World! -Constructing with: (45) true (object) +Constructing with: (46) true (object) 18: toString! undefined true -Constructing with: (46) _level0 (object) +Constructing with: (47) _level0 (object) 19: toString! undefined _level0 -Constructing with: (47) _level0 (object) +Constructing with: (48) ???????????? (object) 20: toString! undefined -[type Object] -Constructing with: (48) [type Object] (object) +???????????? +Constructing with: (49) _level0 (object) 21: toString! undefined [type Object] -Constructing with: (49) (object) +Constructing with: (50) [type Object] (object) 22: toString! undefined [type Object] -Constructing with: (50) [type Object] (object) +Constructing with: (51) (object) 23: toString! undefined [type Object] -Constructing with: (51) [type Object] (object) +Constructing with: (52) [type Object] (object) 24: toString! undefined [type Object] -Constructing with: (52) [type Object] (object) +Constructing with: (53) [type Object] (object) 25: toString! undefined [type Object] -Constructing with: (53) [type Object] (object) +Constructing with: (54) [type Object] (object) 26: toString! undefined [type Object] +Constructing with: (55) [type Object] (object) +27: toString! +undefined +[type Object] <root /> <name /> <root /> @@ -450,166 +463,174 @@ true Creating with: (19) _level0 (string) <_level0 /> _level0 -Creating with: (20) _level0 (movieclip) +Creating with: (20) ???????????? (string) +<???????????? /> +???????????? +Creating with: (21) _level0 (movieclip) <_level0 /> _level0 -Creating with: (21) [object Object] (object) +Creating with: (22) [object Object] (object) <[object Object] /> [object Object] -Creating with: (22) (undefined) +Creating with: (23) (undefined) undefined undefined -Creating with: (23) [type Object] (object) +Creating with: (24) [type Object] (object) toString called <[type Object] /> toString called [type Object] -Creating with: (24) [type Object] (object) +Creating with: (25) [type Object] (object) toString called with <[type Object] /> toString called with [type Object] -Creating with: (25) [object Object] (object) +Creating with: (26) [object Object] (object) <[object Object] /> [object Object] -Creating with: (26) (object) +Creating with: (27) (object) <[type Object] /> [type Object] -Creating with: (27) (object) +Creating with: (28) (object) 0: toString! <[type Object] /> 0: toString! [type Object] -Creating with: (28) null (object) +Creating with: (29) null (object) 1: toString! <[type Object] /> 1: toString! [type Object] -Creating with: (29) true (object) +Creating with: (30) true (object) 2: toString! <[type Object] /> 2: toString! [type Object] -Creating with: (30) false (object) +Creating with: (31) false (object) 3: toString! <[type Object] /> 3: toString! [type Object] -Creating with: (31) 0 (object) +Creating with: (32) 0 (object) 4: toString! <[type Object] /> 4: toString! [type Object] -Creating with: (32) 1 (object) +Creating with: (33) 1 (object) 5: toString! <[type Object] /> 5: toString! [type Object] -Creating with: (33) 0.5 (object) +Creating with: (34) 0.5 (object) 6: toString! <[type Object] /> 6: toString! [type Object] -Creating with: (34) -1 (object) +Creating with: (35) -1 (object) 7: toString! <[type Object] /> 7: toString! [type Object] -Creating with: (35) -0.5 (object) +Creating with: (36) -0.5 (object) 8: toString! <[type Object] /> 8: toString! [type Object] -Creating with: (36) Infinity (object) +Creating with: (37) Infinity (object) 9: toString! <[type Object] /> 9: toString! [type Object] -Creating with: (37) -Infinity (object) +Creating with: (38) -Infinity (object) 10: toString! <[type Object] /> 10: toString! [type Object] -Creating with: (38) NaN (object) +Creating with: (39) NaN (object) 11: toString! <[type Object] /> 11: toString! [type Object] -Creating with: (39) (object) +Creating with: (40) (object) 12: toString! < /> 12: toString! -Creating with: (40) 0 (object) +Creating with: (41) 0 (object) 13: toString! <0 /> 13: toString! 0 -Creating with: (41) -0 (object) +Creating with: (42) -0 (object) 14: toString! <-0 /> 14: toString! -0 -Creating with: (42) 0.0 (object) +Creating with: (43) 0.0 (object) 15: toString! <0.0 /> 15: toString! 0.0 -Creating with: (43) 1 (object) +Creating with: (44) 1 (object) 16: toString! <1 /> 16: toString! 1 -Creating with: (44) Hello World! (object) +Creating with: (45) Hello World! (object) 17: toString! <Hello World! /> 17: toString! Hello World! -Creating with: (45) true (object) +Creating with: (46) true (object) 18: toString! <true /> 18: toString! true -Creating with: (46) _level0 (object) +Creating with: (47) _level0 (object) 19: toString! <_level0 /> 19: toString! _level0 -Creating with: (47) _level0 (object) +Creating with: (48) ???????????? (object) 20: toString! -<[type Object] /> +<???????????? /> 20: toString! -[type Object] -Creating with: (48) [type Object] (object) +???????????? +Creating with: (49) _level0 (object) 21: toString! <[type Object] /> 21: toString! [type Object] -Creating with: (49) (object) +Creating with: (50) [type Object] (object) 22: toString! <[type Object] /> 22: toString! [type Object] -Creating with: (50) [type Object] (object) +Creating with: (51) (object) 23: toString! <[type Object] /> 23: toString! [type Object] -Creating with: (51) [type Object] (object) +Creating with: (52) [type Object] (object) 24: toString! <[type Object] /> 24: toString! [type Object] -Creating with: (52) [type Object] (object) +Creating with: (53) [type Object] (object) 25: toString! <[type Object] /> 25: toString! [type Object] -Creating with: (53) [type Object] (object) +Creating with: (54) [type Object] (object) 26: toString! <[type Object] /> 26: toString! [type Object] +Creating with: (55) [type Object] (object) +27: toString! +<[type Object] /> +27: toString! +[type Object] application/x-www-form-urlencoded <!DOCTYPE doctype declaration > false @@ -696,28 +717,28 @@ Infinity Infinity true true --2147483648 +0 Infinity Testing with: (10) -Infinity (number) -Infinity -Infinity true true --2147483648 +0 -Infinity Testing with: (11) NaN (number) NaN NaN false false --2147483648 +0 NaN Testing with: (12) (string) false false --2147483648 +0 Testing with: (13) 0 (string) 0 @@ -752,44 +773,51 @@ Hello World! Hello World! false false --2147483648 +0 Hello World! Testing with: (18) true (string) true true false false --2147483648 +0 true Testing with: (19) _level0 (string) _level0 _level0 false false --2147483648 +0 _level0 -Testing with: (20) _level0 (movieclip) +Testing with: (20) ???????????? (string) +???????????? +???????????? +false +false +0 +???????????? +Testing with: (21) _level0 (movieclip) _level0 _level0 true true --2147483648 +0 _level0 -Testing with: (21) [object Object] (object) +Testing with: (22) [object Object] (object) [object Object] [object Object] true true --2147483648 +0 [object Object] -Testing with: (22) (undefined) +Testing with: (23) (undefined) [object Object] [object Object] true true --2147483648 +0 [object Object] -Testing with: (23) [type Object] (object) +Testing with: (24) [type Object] (object) toString called [type Object] toString called @@ -800,10 +828,10 @@ toString called true toString called valueOf called --2147483648 +0 toString called [type Object] -Testing with: (24) [type Object] (object) +Testing with: (25) [type Object] (object) toString called with [type Object] toString called with @@ -813,25 +841,25 @@ true toString called with true toString called with --2147483648 +0 toString called with [type Object] -Testing with: (25) [object Object] (object) +Testing with: (26) [object Object] (object) [object Object] [object Object] true true valueOf called with --2147483648 +0 [object Object] -Testing with: (26) (object) +Testing with: (27) (object) [type Object] [type Object] true true 0 [type Object] -Testing with: (27) (object) +Testing with: (28) (object) 0: toString! [type Object] 0: toString! @@ -845,7 +873,7 @@ true 0 0: toString! [type Object] -Testing with: (28) null (object) +Testing with: (29) null (object) 1: toString! [type Object] 1: toString! @@ -859,7 +887,7 @@ true 0 1: toString! [type Object] -Testing with: (29) true (object) +Testing with: (30) true (object) 2: toString! [type Object] 2: toString! @@ -873,7 +901,7 @@ true 1 2: toString! [type Object] -Testing with: (30) false (object) +Testing with: (31) false (object) 3: toString! [type Object] 3: toString! @@ -887,7 +915,7 @@ true 0 3: toString! [type Object] -Testing with: (31) 0 (object) +Testing with: (32) 0 (object) 4: toString! [type Object] 4: toString! @@ -901,7 +929,7 @@ true 0 4: toString! [type Object] -Testing with: (32) 1 (object) +Testing with: (33) 1 (object) 5: toString! [type Object] 5: toString! @@ -915,7 +943,7 @@ true 1 5: toString! [type Object] -Testing with: (33) 0.5 (object) +Testing with: (34) 0.5 (object) 6: toString! [type Object] 6: toString! @@ -929,7 +957,7 @@ true 0 6: toString! [type Object] -Testing with: (34) -1 (object) +Testing with: (35) -1 (object) 7: toString! [type Object] 7: toString! @@ -943,7 +971,7 @@ true -1 7: toString! [type Object] -Testing with: (35) -0.5 (object) +Testing with: (36) -0.5 (object) 8: toString! [type Object] 8: toString! @@ -957,7 +985,7 @@ true 0 8: toString! [type Object] -Testing with: (36) Infinity (object) +Testing with: (37) Infinity (object) 9: toString! [type Object] 9: toString! @@ -968,10 +996,10 @@ true true 9: toString! 9: valueOf! --2147483648 +0 9: toString! [type Object] -Testing with: (37) -Infinity (object) +Testing with: (38) -Infinity (object) 10: toString! [type Object] 10: toString! @@ -982,10 +1010,10 @@ true true 10: toString! 10: valueOf! --2147483648 +0 10: toString! [type Object] -Testing with: (38) NaN (object) +Testing with: (39) NaN (object) 11: toString! [type Object] 11: toString! @@ -996,10 +1024,10 @@ true true 11: toString! 11: valueOf! --2147483648 +0 11: toString! [type Object] -Testing with: (39) (object) +Testing with: (40) (object) 12: toString! 12: toString! @@ -1010,10 +1038,10 @@ true true 12: toString! 12: valueOf! --2147483648 +0 12: toString! -Testing with: (40) 0 (object) +Testing with: (41) 0 (object) 13: toString! 0 13: toString! @@ -1027,7 +1055,7 @@ true 0 13: toString! 0 -Testing with: (41) -0 (object) +Testing with: (42) -0 (object) 14: toString! -0 14: toString! @@ -1041,7 +1069,7 @@ true 0 14: toString! -0 -Testing with: (42) 0.0 (object) +Testing with: (43) 0.0 (object) 15: toString! 0.0 15: toString! @@ -1055,7 +1083,7 @@ true 0 15: toString! 0.0 -Testing with: (43) 1 (object) +Testing with: (44) 1 (object) 16: toString! 1 16: toString! @@ -1069,7 +1097,7 @@ true 1 16: toString! 1 -Testing with: (44) Hello World! (object) +Testing with: (45) Hello World! (object) 17: toString! Hello World! 17: toString! @@ -1080,10 +1108,10 @@ true true 17: toString! 17: valueOf! --2147483648 +0 17: toString! Hello World! -Testing with: (45) true (object) +Testing with: (46) true (object) 18: toString! true 18: toString! @@ -1094,10 +1122,10 @@ true true 18: toString! 18: valueOf! --2147483648 +0 18: toString! true -Testing with: (46) _level0 (object) +Testing with: (47) _level0 (object) 19: toString! _level0 19: toString! @@ -1108,24 +1136,24 @@ true true 19: toString! 19: valueOf! --2147483648 +0 19: toString! _level0 -Testing with: (47) _level0 (object) +Testing with: (48) ???????????? (object) 20: toString! -[type Object] +???????????? 20: toString! -[type Object] +???????????? 20: toString! true 20: toString! true 20: toString! 20: valueOf! --2147483648 +0 20: toString! -[type Object] -Testing with: (48) [type Object] (object) +???????????? +Testing with: (49) _level0 (object) 21: toString! [type Object] 21: toString! @@ -1136,10 +1164,10 @@ true true 21: toString! 21: valueOf! --2147483648 +0 21: toString! [type Object] -Testing with: (49) (object) +Testing with: (50) [type Object] (object) 22: toString! [type Object] 22: toString! @@ -1153,7 +1181,7 @@ true 0 22: toString! [type Object] -Testing with: (50) [type Object] (object) +Testing with: (51) (object) 23: toString! [type Object] 23: toString! @@ -1164,10 +1192,10 @@ true true 23: toString! 23: valueOf! --2147483648 +0 23: toString! [type Object] -Testing with: (51) [type Object] (object) +Testing with: (52) [type Object] (object) 24: toString! [type Object] 24: toString! @@ -1178,10 +1206,10 @@ true true 24: toString! 24: valueOf! --2147483648 +0 24: toString! [type Object] -Testing with: (52) [type Object] (object) +Testing with: (53) [type Object] (object) 25: toString! [type Object] 25: toString! @@ -1192,10 +1220,10 @@ true true 25: toString! 25: valueOf! --2147483648 +0 25: toString! [type Object] -Testing with: (53) [type Object] (object) +Testing with: (54) [type Object] (object) 26: toString! [type Object] 26: toString! @@ -1206,6 +1234,20 @@ true true 26: toString! 26: valueOf! --2147483648 +0 26: toString! [type Object] +Testing with: (55) [type Object] (object) +27: toString! +[type Object] +27: toString! +[type Object] +27: toString! +true +27: toString! +true +27: toString! +27: valueOf! +0 +27: toString! +[type Object] diff --git a/test/trace/xml-other-6.swf b/test/trace/xml-other-6.swf index 8a6c7a2..58b1be0 100644 Binary files a/test/trace/xml-other-6.swf and b/test/trace/xml-other-6.swf differ diff --git a/test/trace/xml-other-6.swf.trace b/test/trace/xml-other-6.swf.trace index 29d67b4..c23bea4 100644 --- a/test/trace/xml-other-6.swf.trace +++ b/test/trace/xml-other-6.swf.trace @@ -24,7 +24,6 @@ valueOf called with 19: valueOf! 20: valueOf! 21: valueOf! -21: toString! 22: valueOf! 22: toString! 23: valueOf! @@ -35,6 +34,8 @@ valueOf called with 25: toString! 26: valueOf! 26: toString! +27: valueOf! +27: toString! <root /> <root /> @@ -78,103 +79,108 @@ Constructing with: (18) true (string) true Constructing with: (19) _level0 (string) _level0 -Constructing with: (20) _level0 (movieclip) +Constructing with: (20) ?????? (string) +?????? +Constructing with: (21) _level0 (movieclip) _level0 -Constructing with: (21) [object Object] (object) +Constructing with: (22) [object Object] (object) [object Object] -Constructing with: (22) [type Function] (function) +Constructing with: (23) [type Function] (function) [type Function] -Constructing with: (23) [type Object] (object) +Constructing with: (24) [type Object] (object) toString called [type Object] -Constructing with: (24) [type Object] (object) +Constructing with: (25) [type Object] (object) toString called with [type Object] -Constructing with: (25) [object Object] (object) +Constructing with: (26) [object Object] (object) [object Object] -Constructing with: (26) (object) -[type Object] Constructing with: (27) (object) +[type Object] +Constructing with: (28) (object) 0: toString! [type Object] -Constructing with: (28) null (object) +Constructing with: (29) null (object) 1: toString! [type Object] -Constructing with: (29) true (object) +Constructing with: (30) true (object) 2: toString! [type Object] -Constructing with: (30) false (object) +Constructing with: (31) false (object) 3: toString! [type Object] -Constructing with: (31) 0 (object) +Constructing with: (32) 0 (object) 4: toString! [type Object] -Constructing with: (32) 1 (object) +Constructing with: (33) 1 (object) 5: toString! [type Object] -Constructing with: (33) 0.5 (object) +Constructing with: (34) 0.5 (object) 6: toString! [type Object] -Constructing with: (34) -1 (object) +Constructing with: (35) -1 (object) 7: toString! [type Object] -Constructing with: (35) -0.5 (object) +Constructing with: (36) -0.5 (object) 8: toString! [type Object] -Constructing with: (36) Infinity (object) +Constructing with: (37) Infinity (object) 9: toString! [type Object] -Constructing with: (37) -Infinity (object) +Constructing with: (38) -Infinity (object) 10: toString! [type Object] -Constructing with: (38) NaN (object) +Constructing with: (39) NaN (object) 11: toString! [type Object] -Constructing with: (39) (object) +Constructing with: (40) (object) 12: toString! -Constructing with: (40) 0 (object) +Constructing with: (41) 0 (object) 13: toString! 0 -Constructing with: (41) -0 (object) +Constructing with: (42) -0 (object) 14: toString! -0 -Constructing with: (42) 0.0 (object) +Constructing with: (43) 0.0 (object) 15: toString! 0.0 -Constructing with: (43) 1 (object) +Constructing with: (44) 1 (object) 16: toString! 1 -Constructing with: (44) Hello World! (object) +Constructing with: (45) Hello World! (object) 17: toString! Hello World! -Constructing with: (45) true (object) +Constructing with: (46) true (object) 18: toString! true -Constructing with: (46) _level0 (object) +Constructing with: (47) _level0 (object) 19: toString! _level0 -Constructing with: (47) _level0 (object) +Constructing with: (48) ?????? (object) 20: toString! -[type Object] -Constructing with: (48) [type Object] (object) +?????? +Constructing with: (49) _level0 (object) 21: toString! [type Object] -Constructing with: (49) [type Object] (object) +Constructing with: (50) [type Object] (object) 22: toString! [type Object] -Constructing with: (50) [type Object] (object) +Constructing with: (51) [type Object] (object) 23: toString! [type Object] -Constructing with: (51) [type Object] (object) +Constructing with: (52) [type Object] (object) 24: toString! [type Object] -Constructing with: (52) [type Object] (object) +Constructing with: (53) [type Object] (object) 25: toString! [type Object] -Constructing with: (53) [type Object] (object) +Constructing with: (54) [type Object] (object) 26: toString! [type Object] +Constructing with: (55) [type Object] (object) +27: toString! +[type Object] undefined <?xml XML decl ?><!DOCTYPE doctype decl> @@ -251,137 +257,144 @@ true Constructing with: (19) _level0 (string) undefined _level0 -Constructing with: (20) _level0 (movieclip) +Constructing with: (20) ?????? (string) +undefined +?????? +Constructing with: (21) _level0 (movieclip) undefined _level0 -Constructing with: (21) [object Object] (object) +Constructing with: (22) [object Object] (object) undefined [object Object] -Constructing with: (22) [type Function] (function) +Constructing with: (23) [type Function] (function) undefined [type Function] -Constructing with: (23) [type Object] (object) +Constructing with: (24) [type Object] (object) toString called undefined [type Object] -Constructing with: (24) [type Object] (object) +Constructing with: (25) [type Object] (object) toString called with undefined [type Object] -Constructing with: (25) [object Object] (object) +Constructing with: (26) [object Object] (object) undefined [object Object] -Constructing with: (26) (object) +Constructing with: (27) (object) undefined [type Object] -Constructing with: (27) (object) +Constructing with: (28) (object) 0: toString! undefined [type Object] -Constructing with: (28) null (object) +Constructing with: (29) null (object) 1: toString! undefined [type Object] -Constructing with: (29) true (object) +Constructing with: (30) true (object) 2: toString! undefined [type Object] -Constructing with: (30) false (object) +Constructing with: (31) false (object) 3: toString! undefined [type Object] -Constructing with: (31) 0 (object) +Constructing with: (32) 0 (object) 4: toString! undefined [type Object] -Constructing with: (32) 1 (object) +Constructing with: (33) 1 (object) 5: toString! undefined [type Object] -Constructing with: (33) 0.5 (object) +Constructing with: (34) 0.5 (object) 6: toString! undefined [type Object] -Constructing with: (34) -1 (object) +Constructing with: (35) -1 (object) 7: toString! undefined [type Object] -Constructing with: (35) -0.5 (object) +Constructing with: (36) -0.5 (object) 8: toString! undefined [type Object] -Constructing with: (36) Infinity (object) +Constructing with: (37) Infinity (object) 9: toString! undefined [type Object] -Constructing with: (37) -Infinity (object) +Constructing with: (38) -Infinity (object) 10: toString! undefined [type Object] -Constructing with: (38) NaN (object) +Constructing with: (39) NaN (object) 11: toString! undefined [type Object] -Constructing with: (39) (object) +Constructing with: (40) (object) 12: toString! undefined -Constructing with: (40) 0 (object) +Constructing with: (41) 0 (object) 13: toString! undefined 0 -Constructing with: (41) -0 (object) +Constructing with: (42) -0 (object) 14: toString! undefined -0 -Constructing with: (42) 0.0 (object) +Constructing with: (43) 0.0 (object) 15: toString! undefined 0.0 -Constructing with: (43) 1 (object) +Constructing with: (44) 1 (object) 16: toString! undefined 1 -Constructing with: (44) Hello World! (object) +Constructing with: (45) Hello World! (object) 17: toString! undefined Hello World! -Constructing with: (45) true (object) +Constructing with: (46) true (object) 18: toString! undefined true -Constructing with: (46) _level0 (object) +Constructing with: (47) _level0 (object) 19: toString! undefined _level0 -Constructing with: (47) _level0 (object) +Constructing with: (48) ?????? (object) 20: toString! undefined -[type Object] -Constructing with: (48) [type Object] (object) +?????? +Constructing with: (49) _level0 (object) 21: toString! undefined [type Object] -Constructing with: (49) [type Object] (object) +Constructing with: (50) [type Object] (object) 22: toString! undefined [type Object] -Constructing with: (50) [type Object] (object) +Constructing with: (51) [type Object] (object) 23: toString! undefined [type Object] -Constructing with: (51) [type Object] (object) +Constructing with: (52) [type Object] (object) 24: toString! undefined [type Object] -Constructing with: (52) [type Object] (object) +Constructing with: (53) [type Object] (object) 25: toString! undefined [type Object] -Constructing with: (53) [type Object] (object) +Constructing with: (54) [type Object] (object) 26: toString! undefined [type Object] +Constructing with: (55) [type Object] (object) +27: toString! +undefined +[type Object] <root /> <name /> <root /> @@ -451,166 +464,174 @@ true Creating with: (19) _level0 (string) <_level0 /> _level0 -Creating with: (20) _level0 (movieclip) +Creating with: (20) ?????? (string) +<?????? /> +?????? +Creating with: (21) _level0 (movieclip) <_level0 /> _level0 -Creating with: (21) [object Object] (object) +Creating with: (22) [object Object] (object) <[object Object] /> [object Object] -Creating with: (22) [type Function] (function) +Creating with: (23) [type Function] (function) <[type Function] /> [type Function] -Creating with: (23) [type Object] (object) +Creating with: (24) [type Object] (object) toString called <[type Object] /> toString called [type Object] -Creating with: (24) [type Object] (object) +Creating with: (25) [type Object] (object) toString called with <[type Object] /> toString called with [type Object] -Creating with: (25) [object Object] (object) +Creating with: (26) [object Object] (object) <[object Object] /> [object Object] -Creating with: (26) (object) +Creating with: (27) (object) <[type Object] /> [type Object] -Creating with: (27) (object) +Creating with: (28) (object) 0: toString! <[type Object] /> 0: toString! [type Object] -Creating with: (28) null (object) +Creating with: (29) null (object) 1: toString! <[type Object] /> 1: toString! [type Object] -Creating with: (29) true (object) +Creating with: (30) true (object) 2: toString! <[type Object] /> 2: toString! [type Object] -Creating with: (30) false (object) +Creating with: (31) false (object) 3: toString! <[type Object] /> 3: toString! [type Object] -Creating with: (31) 0 (object) +Creating with: (32) 0 (object) 4: toString! <[type Object] /> 4: toString! [type Object] -Creating with: (32) 1 (object) +Creating with: (33) 1 (object) 5: toString! <[type Object] /> 5: toString! [type Object] -Creating with: (33) 0.5 (object) +Creating with: (34) 0.5 (object) 6: toString! <[type Object] /> 6: toString! [type Object] -Creating with: (34) -1 (object) +Creating with: (35) -1 (object) 7: toString! <[type Object] /> 7: toString! [type Object] -Creating with: (35) -0.5 (object) +Creating with: (36) -0.5 (object) 8: toString! <[type Object] /> 8: toString! [type Object] -Creating with: (36) Infinity (object) +Creating with: (37) Infinity (object) 9: toString! <[type Object] /> 9: toString! [type Object] -Creating with: (37) -Infinity (object) +Creating with: (38) -Infinity (object) 10: toString! <[type Object] /> 10: toString! [type Object] -Creating with: (38) NaN (object) +Creating with: (39) NaN (object) 11: toString! <[type Object] /> 11: toString! [type Object] -Creating with: (39) (object) +Creating with: (40) (object) 12: toString! < /> 12: toString! -Creating with: (40) 0 (object) +Creating with: (41) 0 (object) 13: toString! <0 /> 13: toString! 0 -Creating with: (41) -0 (object) +Creating with: (42) -0 (object) 14: toString! <-0 /> 14: toString! -0 -Creating with: (42) 0.0 (object) +Creating with: (43) 0.0 (object) 15: toString! <0.0 /> 15: toString! 0.0 -Creating with: (43) 1 (object) +Creating with: (44) 1 (object) 16: toString! <1 /> 16: toString! 1 -Creating with: (44) Hello World! (object) +Creating with: (45) Hello World! (object) 17: toString! <Hello World! /> 17: toString! Hello World! -Creating with: (45) true (object) +Creating with: (46) true (object) 18: toString! <true /> 18: toString! true -Creating with: (46) _level0 (object) +Creating with: (47) _level0 (object) 19: toString! <_level0 /> 19: toString! _level0 -Creating with: (47) _level0 (object) +Creating with: (48) ?????? (object) 20: toString! -<[type Object] /> +<?????? /> 20: toString! -[type Object] -Creating with: (48) [type Object] (object) +?????? +Creating with: (49) _level0 (object) 21: toString! <[type Object] /> 21: toString! [type Object] -Creating with: (49) [type Object] (object) +Creating with: (50) [type Object] (object) 22: toString! <[type Object] /> 22: toString! [type Object] -Creating with: (50) [type Object] (object) +Creating with: (51) [type Object] (object) 23: toString! <[type Object] /> 23: toString! [type Object] -Creating with: (51) [type Object] (object) +Creating with: (52) [type Object] (object) 24: toString! <[type Object] /> 24: toString! [type Object] -Creating with: (52) [type Object] (object) +Creating with: (53) [type Object] (object) 25: toString! <[type Object] /> 25: toString! [type Object] -Creating with: (53) [type Object] (object) +Creating with: (54) [type Object] (object) 26: toString! <[type Object] /> 26: toString! [type Object] +Creating with: (55) [type Object] (object) +27: toString! +<[type Object] /> +27: toString! +[type Object] application/x-www-form-urlencoded <!DOCTYPE doctype declaration > false @@ -697,28 +718,28 @@ Infinity Infinity true true --2147483648 +0 Infinity Testing with: (10) -Infinity (number) -Infinity -Infinity true true --2147483648 +0 -Infinity Testing with: (11) NaN (number) NaN NaN false false --2147483648 +0 NaN Testing with: (12) (string) false false --2147483648 +0 Testing with: (13) 0 (string) 0 @@ -753,44 +774,51 @@ Hello World! Hello World! false false --2147483648 +0 Hello World! Testing with: (18) true (string) true true false false --2147483648 +0 true Testing with: (19) _level0 (string) _level0 _level0 false false --2147483648 +0 _level0 -Testing with: (20) _level0 (movieclip) +Testing with: (20) ?????? (string) +?????? +?????? +false +false +0 +?????? +Testing with: (21) _level0 (movieclip) _level0 _level0 true true --2147483648 +0 _level0 -Testing with: (21) [object Object] (object) +Testing with: (22) [object Object] (object) [object Object] [object Object] true true --2147483648 +0 [object Object] -Testing with: (22) [type Function] (function) +Testing with: (23) [type Function] (function) [type Function] [type Function] true true --2147483648 +0 [type Function] -Testing with: (23) [type Object] (object) +Testing with: (24) [type Object] (object) toString called [type Object] toString called @@ -801,10 +829,10 @@ toString called true toString called valueOf called --2147483648 +0 toString called [type Object] -Testing with: (24) [type Object] (object) +Testing with: (25) [type Object] (object) toString called with [type Object] toString called with @@ -814,25 +842,25 @@ true toString called with true toString called with --2147483648 +0 toString called with [type Object] -Testing with: (25) [object Object] (object) +Testing with: (26) [object Object] (object) [object Object] [object Object] true true valueOf called with --2147483648 +0 [object Object] -Testing with: (26) (object) +Testing with: (27) (object) [type Object] [type Object] true true 0 [type Object] -Testing with: (27) (object) +Testing with: (28) (object) 0: toString! [type Object] 0: toString! @@ -846,7 +874,7 @@ true 0 0: toString! [type Object] -Testing with: (28) null (object) +Testing with: (29) null (object) 1: toString! [type Object] 1: toString! @@ -860,7 +888,7 @@ true 0 1: toString! [type Object] -Testing with: (29) true (object) +Testing with: (30) true (object) 2: toString! [type Object] 2: toString! @@ -874,7 +902,7 @@ true 1 2: toString! [type Object] -Testing with: (30) false (object) +Testing with: (31) false (object) 3: toString! [type Object] 3: toString! @@ -888,7 +916,7 @@ true 0 3: toString! [type Object] -Testing with: (31) 0 (object) +Testing with: (32) 0 (object) 4: toString! [type Object] 4: toString! @@ -902,7 +930,7 @@ true 0 4: toString! [type Object] -Testing with: (32) 1 (object) +Testing with: (33) 1 (object) 5: toString! [type Object] 5: toString! @@ -916,7 +944,7 @@ true 1 5: toString! [type Object] -Testing with: (33) 0.5 (object) +Testing with: (34) 0.5 (object) 6: toString! [type Object] 6: toString! @@ -930,7 +958,7 @@ true 0 6: toString! [type Object] -Testing with: (34) -1 (object) +Testing with: (35) -1 (object) 7: toString! [type Object] 7: toString! @@ -944,7 +972,7 @@ true -1 7: toString! [type Object] -Testing with: (35) -0.5 (object) +Testing with: (36) -0.5 (object) 8: toString! [type Object] 8: toString! @@ -958,7 +986,7 @@ true 0 8: toString! [type Object] -Testing with: (36) Infinity (object) +Testing with: (37) Infinity (object) 9: toString! [type Object] 9: toString! @@ -969,10 +997,10 @@ true true 9: toString! 9: valueOf! --2147483648 +0 9: toString! [type Object] -Testing with: (37) -Infinity (object) +Testing with: (38) -Infinity (object) 10: toString! [type Object] 10: toString! @@ -983,10 +1011,10 @@ true true 10: toString! 10: valueOf! --2147483648 +0 10: toString! [type Object] -Testing with: (38) NaN (object) +Testing with: (39) NaN (object) 11: toString! [type Object] 11: toString! @@ -997,10 +1025,10 @@ true true 11: toString! 11: valueOf! --2147483648 +0 11: toString! [type Object] -Testing with: (39) (object) +Testing with: (40) (object) 12: toString! 12: toString! @@ -1011,10 +1039,10 @@ true true 12: toString! 12: valueOf! --2147483648 +0 12: toString! -Testing with: (40) 0 (object) +Testing with: (41) 0 (object) 13: toString! 0 13: toString! @@ -1028,7 +1056,7 @@ true 0 13: toString! 0 -Testing with: (41) -0 (object) +Testing with: (42) -0 (object) 14: toString! -0 14: toString! @@ -1042,7 +1070,7 @@ true 0 14: toString! -0 -Testing with: (42) 0.0 (object) +Testing with: (43) 0.0 (object) 15: toString! 0.0 15: toString! @@ -1056,7 +1084,7 @@ true 0 15: toString! 0.0 -Testing with: (43) 1 (object) +Testing with: (44) 1 (object) 16: toString! 1 16: toString! @@ -1070,7 +1098,7 @@ true 1 16: toString! 1 -Testing with: (44) Hello World! (object) +Testing with: (45) Hello World! (object) 17: toString! Hello World! 17: toString! @@ -1081,10 +1109,10 @@ true true 17: toString! 17: valueOf! --2147483648 +0 17: toString! Hello World! -Testing with: (45) true (object) +Testing with: (46) true (object) 18: toString! true 18: toString! @@ -1095,10 +1123,10 @@ true true 18: toString! 18: valueOf! --2147483648 +0 18: toString! true -Testing with: (46) _level0 (object) +Testing with: (47) _level0 (object) 19: toString! _level0 19: toString! @@ -1109,24 +1137,24 @@ true true 19: toString! 19: valueOf! --2147483648 +0 19: toString! _level0 -Testing with: (47) _level0 (object) +Testing with: (48) ?????? (object) 20: toString! -[type Object] +?????? 20: toString! -[type Object] +?????? 20: toString! true 20: toString! true 20: toString! 20: valueOf! --2147483648 +0 20: toString! -[type Object] -Testing with: (48) [type Object] (object) +?????? +Testing with: (49) _level0 (object) 21: toString! [type Object] 21: toString! @@ -1137,10 +1165,10 @@ true true 21: toString! 21: valueOf! --2147483648 +0 21: toString! [type Object] -Testing with: (49) [type Object] (object) +Testing with: (50) [type Object] (object) 22: toString! [type Object] 22: toString! @@ -1151,10 +1179,10 @@ true true 22: toString! 22: valueOf! --2147483648 +0 22: toString! [type Object] -Testing with: (50) [type Object] (object) +Testing with: (51) [type Object] (object) 23: toString! [type Object] 23: toString! @@ -1165,10 +1193,10 @@ true true 23: toString! 23: valueOf! --2147483648 +0 23: toString! [type Object] -Testing with: (51) [type Object] (object) +Testing with: (52) [type Object] (object) 24: toString! [type Object] 24: toString! @@ -1179,10 +1207,10 @@ true true 24: toString! 24: valueOf! --2147483648 +0 24: toString! [type Object] -Testing with: (52) [type Object] (object) +Testing with: (53) [type Object] (object) 25: toString! [type Object] 25: toString! @@ -1193,10 +1221,10 @@ true true 25: toString! 25: valueOf! --2147483648 +0 25: toString! [type Object] -Testing with: (53) [type Object] (object) +Testing with: (54) [type Object] (object) 26: toString! [type Object] 26: toString! @@ -1207,6 +1235,20 @@ true true 26: toString! 26: valueOf! --2147483648 +0 26: toString! [type Object] +Testing with: (55) [type Object] (object) +27: toString! +[type Object] +27: toString! +[type Object] +27: toString! +true +27: toString! +true +27: toString! +27: valueOf! +0 +27: toString! +[type Object] diff --git a/test/trace/xml-other-7.swf b/test/trace/xml-other-7.swf index a8a1282..20c48df 100644 Binary files a/test/trace/xml-other-7.swf and b/test/trace/xml-other-7.swf differ diff --git a/test/trace/xml-other-7.swf.trace b/test/trace/xml-other-7.swf.trace index cdba84e..5e0a83c 100644 --- a/test/trace/xml-other-7.swf.trace +++ b/test/trace/xml-other-7.swf.trace @@ -24,7 +24,6 @@ valueOf called with 19: valueOf! 20: valueOf! 21: valueOf! -21: toString! 22: valueOf! 22: toString! 23: valueOf! @@ -35,6 +34,8 @@ valueOf called with 25: toString! 26: valueOf! 26: toString! +27: valueOf! +27: toString! <root /> <root /> @@ -78,103 +79,108 @@ Constructing with: (18) true (string) true Constructing with: (19) _level0 (string) _level0 -Constructing with: (20) _level0 (movieclip) +Constructing with: (20) ?????? (string) +?????? +Constructing with: (21) _level0 (movieclip) _level0 -Constructing with: (21) [object Object] (object) +Constructing with: (22) [object Object] (object) [object Object] -Constructing with: (22) [type Function] (function) +Constructing with: (23) [type Function] (function) [type Function] -Constructing with: (23) [type Object] (object) +Constructing with: (24) [type Object] (object) toString called [type Object] -Constructing with: (24) [type Object] (object) +Constructing with: (25) [type Object] (object) toString called with [type Object] -Constructing with: (25) [object Object] (object) +Constructing with: (26) [object Object] (object) [object Object] -Constructing with: (26) undefined (object) -[type Object] Constructing with: (27) undefined (object) +[type Object] +Constructing with: (28) undefined (object) 0: toString! [type Object] -Constructing with: (28) null (object) +Constructing with: (29) null (object) 1: toString! [type Object] -Constructing with: (29) true (object) +Constructing with: (30) true (object) 2: toString! [type Object] -Constructing with: (30) false (object) +Constructing with: (31) false (object) 3: toString! [type Object] -Constructing with: (31) 0 (object) +Constructing with: (32) 0 (object) 4: toString! [type Object] -Constructing with: (32) 1 (object) +Constructing with: (33) 1 (object) 5: toString! [type Object] -Constructing with: (33) 0.5 (object) +Constructing with: (34) 0.5 (object) 6: toString! [type Object] -Constructing with: (34) -1 (object) +Constructing with: (35) -1 (object) 7: toString! [type Object] -Constructing with: (35) -0.5 (object) +Constructing with: (36) -0.5 (object) 8: toString! [type Object] -Constructing with: (36) Infinity (object) +Constructing with: (37) Infinity (object) 9: toString! [type Object] -Constructing with: (37) -Infinity (object) +Constructing with: (38) -Infinity (object) 10: toString! [type Object] -Constructing with: (38) NaN (object) +Constructing with: (39) NaN (object) 11: toString! [type Object] -Constructing with: (39) (object) +Constructing with: (40) (object) 12: toString! -Constructing with: (40) 0 (object) +Constructing with: (41) 0 (object) 13: toString! 0 -Constructing with: (41) -0 (object) +Constructing with: (42) -0 (object) 14: toString! -0 -Constructing with: (42) 0.0 (object) +Constructing with: (43) 0.0 (object) 15: toString! 0.0 -Constructing with: (43) 1 (object) +Constructing with: (44) 1 (object) 16: toString! 1 -Constructing with: (44) Hello World! (object) +Constructing with: (45) Hello World! (object) 17: toString! Hello World! -Constructing with: (45) true (object) +Constructing with: (46) true (object) 18: toString! true -Constructing with: (46) _level0 (object) +Constructing with: (47) _level0 (object) 19: toString! _level0 -Constructing with: (47) _level0 (object) +Constructing with: (48) ?????? (object) 20: toString! -[type Object] -Constructing with: (48) [type Object] (object) +?????? +Constructing with: (49) _level0 (object) 21: toString! [type Object] -Constructing with: (49) [type Object] (object) +Constructing with: (50) [type Object] (object) 22: toString! [type Object] -Constructing with: (50) [type Object] (object) +Constructing with: (51) [type Object] (object) 23: toString! [type Object] -Constructing with: (51) [type Object] (object) +Constructing with: (52) [type Object] (object) 24: toString! [type Object] -Constructing with: (52) [type Object] (object) +Constructing with: (53) [type Object] (object) 25: toString! [type Object] -Constructing with: (53) [type Object] (object) +Constructing with: (54) [type Object] (object) 26: toString! [type Object] +Constructing with: (55) [type Object] (object) +27: toString! +[type Object] undefined <?xml XML decl ?><!DOCTYPE doctype decl> @@ -251,137 +257,144 @@ true Constructing with: (19) _level0 (string) undefined _level0 -Constructing with: (20) _level0 (movieclip) +Constructing with: (20) ?????? (string) +undefined +?????? +Constructing with: (21) _level0 (movieclip) undefined _level0 -Constructing with: (21) [object Object] (object) +Constructing with: (22) [object Object] (object) undefined [object Object] -Constructing with: (22) [type Function] (function) +Constructing with: (23) [type Function] (function) undefined [type Function] -Constructing with: (23) [type Object] (object) +Constructing with: (24) [type Object] (object) toString called undefined [type Object] -Constructing with: (24) [type Object] (object) +Constructing with: (25) [type Object] (object) toString called with undefined [type Object] -Constructing with: (25) [object Object] (object) +Constructing with: (26) [object Object] (object) undefined [object Object] -Constructing with: (26) undefined (object) +Constructing with: (27) undefined (object) undefined [type Object] -Constructing with: (27) undefined (object) +Constructing with: (28) undefined (object) 0: toString! undefined [type Object] -Constructing with: (28) null (object) +Constructing with: (29) null (object) 1: toString! undefined [type Object] -Constructing with: (29) true (object) +Constructing with: (30) true (object) 2: toString! undefined [type Object] -Constructing with: (30) false (object) +Constructing with: (31) false (object) 3: toString! undefined [type Object] -Constructing with: (31) 0 (object) +Constructing with: (32) 0 (object) 4: toString! undefined [type Object] -Constructing with: (32) 1 (object) +Constructing with: (33) 1 (object) 5: toString! undefined [type Object] -Constructing with: (33) 0.5 (object) +Constructing with: (34) 0.5 (object) 6: toString! undefined [type Object] -Constructing with: (34) -1 (object) +Constructing with: (35) -1 (object) 7: toString! undefined [type Object] -Constructing with: (35) -0.5 (object) +Constructing with: (36) -0.5 (object) 8: toString! undefined [type Object] -Constructing with: (36) Infinity (object) +Constructing with: (37) Infinity (object) 9: toString! undefined [type Object] -Constructing with: (37) -Infinity (object) +Constructing with: (38) -Infinity (object) 10: toString! undefined [type Object] -Constructing with: (38) NaN (object) +Constructing with: (39) NaN (object) 11: toString! undefined [type Object] -Constructing with: (39) (object) +Constructing with: (40) (object) 12: toString! undefined -Constructing with: (40) 0 (object) +Constructing with: (41) 0 (object) 13: toString! undefined 0 -Constructing with: (41) -0 (object) +Constructing with: (42) -0 (object) 14: toString! undefined -0 -Constructing with: (42) 0.0 (object) +Constructing with: (43) 0.0 (object) 15: toString! undefined 0.0 -Constructing with: (43) 1 (object) +Constructing with: (44) 1 (object) 16: toString! undefined 1 -Constructing with: (44) Hello World! (object) +Constructing with: (45) Hello World! (object) 17: toString! undefined Hello World! -Constructing with: (45) true (object) +Constructing with: (46) true (object) 18: toString! undefined true -Constructing with: (46) _level0 (object) +Constructing with: (47) _level0 (object) 19: toString! undefined _level0 -Constructing with: (47) _level0 (object) +Constructing with: (48) ?????? (object) 20: toString! undefined -[type Object] -Constructing with: (48) [type Object] (object) +?????? +Constructing with: (49) _level0 (object) 21: toString! undefined [type Object] -Constructing with: (49) [type Object] (object) +Constructing with: (50) [type Object] (object) 22: toString! undefined [type Object] -Constructing with: (50) [type Object] (object) +Constructing with: (51) [type Object] (object) 23: toString! undefined [type Object] -Constructing with: (51) [type Object] (object) +Constructing with: (52) [type Object] (object) 24: toString! undefined [type Object] -Constructing with: (52) [type Object] (object) +Constructing with: (53) [type Object] (object) 25: toString! undefined [type Object] -Constructing with: (53) [type Object] (object) +Constructing with: (54) [type Object] (object) 26: toString! undefined [type Object] +Constructing with: (55) [type Object] (object) +27: toString! +undefined +[type Object] <root /> <name /> <root /> @@ -451,166 +464,174 @@ true Creating with: (19) _level0 (string) <_level0 /> _level0 -Creating with: (20) _level0 (movieclip) +Creating with: (20) ?????? (string) +<?????? /> +?????? +Creating with: (21) _level0 (movieclip) <_level0 /> _level0 -Creating with: (21) [object Object] (object) +Creating with: (22) [object Object] (object) <[object Object] /> [object Object] -Creating with: (22) [type Function] (function) +Creating with: (23) [type Function] (function) <[type Function] /> [type Function] -Creating with: (23) [type Object] (object) +Creating with: (24) [type Object] (object) toString called <[type Object] /> toString called [type Object] -Creating with: (24) [type Object] (object) +Creating with: (25) [type Object] (object) toString called with <[type Object] /> toString called with [type Object] -Creating with: (25) [object Object] (object) +Creating with: (26) [object Object] (object) <[object Object] /> [object Object] -Creating with: (26) undefined (object) +Creating with: (27) undefined (object) <[type Object] /> [type Object] -Creating with: (27) undefined (object) +Creating with: (28) undefined (object) 0: toString! <[type Object] /> 0: toString! [type Object] -Creating with: (28) null (object) +Creating with: (29) null (object) 1: toString! <[type Object] /> 1: toString! [type Object] -Creating with: (29) true (object) +Creating with: (30) true (object) 2: toString! <[type Object] /> 2: toString! [type Object] -Creating with: (30) false (object) +Creating with: (31) false (object) 3: toString! <[type Object] /> 3: toString! [type Object] -Creating with: (31) 0 (object) +Creating with: (32) 0 (object) 4: toString! <[type Object] /> 4: toString! [type Object] -Creating with: (32) 1 (object) +Creating with: (33) 1 (object) 5: toString! <[type Object] /> 5: toString! [type Object] -Creating with: (33) 0.5 (object) +Creating with: (34) 0.5 (object) 6: toString! <[type Object] /> 6: toString! [type Object] -Creating with: (34) -1 (object) +Creating with: (35) -1 (object) 7: toString! <[type Object] /> 7: toString! [type Object] -Creating with: (35) -0.5 (object) +Creating with: (36) -0.5 (object) 8: toString! <[type Object] /> 8: toString! [type Object] -Creating with: (36) Infinity (object) +Creating with: (37) Infinity (object) 9: toString! <[type Object] /> 9: toString! [type Object] -Creating with: (37) -Infinity (object) +Creating with: (38) -Infinity (object) 10: toString! <[type Object] /> 10: toString! [type Object] -Creating with: (38) NaN (object) +Creating with: (39) NaN (object) 11: toString! <[type Object] /> 11: toString! [type Object] -Creating with: (39) (object) +Creating with: (40) (object) 12: toString! < /> 12: toString! -Creating with: (40) 0 (object) +Creating with: (41) 0 (object) 13: toString! <0 /> 13: toString! 0 -Creating with: (41) -0 (object) +Creating with: (42) -0 (object) 14: toString! <-0 /> 14: toString! -0 -Creating with: (42) 0.0 (object) +Creating with: (43) 0.0 (object) 15: toString! <0.0 /> 15: toString! 0.0 -Creating with: (43) 1 (object) +Creating with: (44) 1 (object) 16: toString! <1 /> 16: toString! 1 -Creating with: (44) Hello World! (object) +Creating with: (45) Hello World! (object) 17: toString! <Hello World! /> 17: toString! Hello World! -Creating with: (45) true (object) +Creating with: (46) true (object) 18: toString! <true /> 18: toString! true -Creating with: (46) _level0 (object) +Creating with: (47) _level0 (object) 19: toString! <_level0 /> 19: toString! _level0 -Creating with: (47) _level0 (object) +Creating with: (48) ?????? (object) 20: toString! -<[type Object] /> +<?????? /> 20: toString! -[type Object] -Creating with: (48) [type Object] (object) +?????? +Creating with: (49) _level0 (object) 21: toString! <[type Object] /> 21: toString! [type Object] -Creating with: (49) [type Object] (object) +Creating with: (50) [type Object] (object) 22: toString! <[type Object] /> 22: toString! [type Object] -Creating with: (50) [type Object] (object) +Creating with: (51) [type Object] (object) 23: toString! <[type Object] /> 23: toString! [type Object] -Creating with: (51) [type Object] (object) +Creating with: (52) [type Object] (object) 24: toString! <[type Object] /> 24: toString! [type Object] -Creating with: (52) [type Object] (object) +Creating with: (53) [type Object] (object) 25: toString! <[type Object] /> 25: toString! [type Object] -Creating with: (53) [type Object] (object) +Creating with: (54) [type Object] (object) 26: toString! <[type Object] /> 26: toString! [type Object] +Creating with: (55) [type Object] (object) +27: toString! +<[type Object] /> +27: toString! +[type Object] application/x-www-form-urlencoded <!DOCTYPE doctype declaration > false @@ -641,7 +662,7 @@ null null false false --2147483648 +0 null Testing with: (2) true (boolean) true @@ -697,28 +718,28 @@ Infinity Infinity true true --2147483648 +0 Infinity Testing with: (10) -Infinity (number) -Infinity -Infinity true true --2147483648 +0 -Infinity Testing with: (11) NaN (number) NaN NaN false false --2147483648 +0 NaN Testing with: (12) (string) false false --2147483648 +0 Testing with: (13) 0 (string) 0 @@ -753,44 +774,51 @@ Hello World! Hello World! true true --2147483648 +0 Hello World! Testing with: (18) true (string) true true true true --2147483648 +0 true Testing with: (19) _level0 (string) _level0 _level0 true true --2147483648 +0 _level0 -Testing with: (20) _level0 (movieclip) +Testing with: (20) ?????? (string) +?????? +?????? +true +true +0 +?????? +Testing with: (21) _level0 (movieclip) _level0 _level0 true true --2147483648 +0 _level0 -Testing with: (21) [object Object] (object) +Testing with: (22) [object Object] (object) [object Object] [object Object] true true --2147483648 +0 [object Object] -Testing with: (22) [type Function] (function) +Testing with: (23) [type Function] (function) [type Function] [type Function] true true --2147483648 +0 [type Function] -Testing with: (23) [type Object] (object) +Testing with: (24) [type Object] (object) toString called [type Object] toString called @@ -801,10 +829,10 @@ toString called true toString called valueOf called --2147483648 +0 toString called [type Object] -Testing with: (24) [type Object] (object) +Testing with: (25) [type Object] (object) toString called with [type Object] toString called with @@ -814,25 +842,25 @@ true toString called with true toString called with --2147483648 +0 toString called with [type Object] -Testing with: (25) [object Object] (object) +Testing with: (26) [object Object] (object) [object Object] [object Object] true true valueOf called with --2147483648 +0 [object Object] -Testing with: (26) undefined (object) +Testing with: (27) undefined (object) [type Object] [type Object] true true --2147483648 +0 [type Object] -Testing with: (27) undefined (object) +Testing with: (28) undefined (object) 0: toString! [type Object] 0: toString! @@ -843,10 +871,10 @@ true true 0: toString! 0: valueOf! --2147483648 +0 0: toString! [type Object] -Testing with: (28) null (object) +Testing with: (29) null (object) 1: toString! [type Object] 1: toString! @@ -857,10 +885,10 @@ true true 1: toString! 1: valueOf! --2147483648 +0 1: toString! [type Object] -Testing with: (29) true (object) +Testing with: (30) true (object) 2: toString! [type Object] 2: toString! @@ -874,7 +902,7 @@ true 1 2: toString! [type Object] -Testing with: (30) false (object) +Testing with: (31) false (object) 3: toString! [type Object] 3: toString! @@ -888,7 +916,7 @@ true 0 3: toString! [type Object] -Testing with: (31) 0 (object) +Testing with: (32) 0 (object) 4: toString! [type Object] 4: toString! @@ -902,7 +930,7 @@ true 0 4: toString! [type Object] -Testing with: (32) 1 (object) +Testing with: (33) 1 (object) 5: toString! [type Object] 5: toString! @@ -916,7 +944,7 @@ true 1 5: toString! [type Object] -Testing with: (33) 0.5 (object) +Testing with: (34) 0.5 (object) 6: toString! [type Object] 6: toString! @@ -930,7 +958,7 @@ true 0 6: toString! [type Object] -Testing with: (34) -1 (object) +Testing with: (35) -1 (object) 7: toString! [type Object] 7: toString! @@ -944,7 +972,7 @@ true -1 7: toString! [type Object] -Testing with: (35) -0.5 (object) +Testing with: (36) -0.5 (object) 8: toString! [type Object] 8: toString! @@ -958,7 +986,7 @@ true 0 8: toString! [type Object] -Testing with: (36) Infinity (object) +Testing with: (37) Infinity (object) 9: toString! [type Object] 9: toString! @@ -969,10 +997,10 @@ true true 9: toString! 9: valueOf! --2147483648 +0 9: toString! [type Object] -Testing with: (37) -Infinity (object) +Testing with: (38) -Infinity (object) 10: toString! [type Object] 10: toString! @@ -983,10 +1011,10 @@ true true 10: toString! 10: valueOf! --2147483648 +0 10: toString! [type Object] -Testing with: (38) NaN (object) +Testing with: (39) NaN (object) 11: toString! [type Object] 11: toString! @@ -997,10 +1025,10 @@ true true 11: toString! 11: valueOf! --2147483648 +0 11: toString! [type Object] -Testing with: (39) (object) +Testing with: (40) (object) 12: toString! 12: toString! @@ -1011,10 +1039,10 @@ true true 12: toString! 12: valueOf! --2147483648 +0 12: toString! -Testing with: (40) 0 (object) +Testing with: (41) 0 (object) 13: toString! 0 13: toString! @@ -1028,7 +1056,7 @@ true 0 13: toString! 0 -Testing with: (41) -0 (object) +Testing with: (42) -0 (object) 14: toString! -0 14: toString! @@ -1042,7 +1070,7 @@ true 0 14: toString! -0 -Testing with: (42) 0.0 (object) +Testing with: (43) 0.0 (object) 15: toString! 0.0 15: toString! @@ -1056,7 +1084,7 @@ true 0 15: toString! 0.0 -Testing with: (43) 1 (object) +Testing with: (44) 1 (object) 16: toString! 1 16: toString! @@ -1070,7 +1098,7 @@ true 1 16: toString! 1 -Testing with: (44) Hello World! (object) +Testing with: (45) Hello World! (object) 17: toString! Hello World! 17: toString! @@ -1081,10 +1109,10 @@ true true 17: toString! 17: valueOf! --2147483648 +0 17: toString! Hello World! -Testing with: (45) true (object) +Testing with: (46) true (object) 18: toString! true 18: toString! @@ -1095,10 +1123,10 @@ true true 18: toString! 18: valueOf! --2147483648 +0 18: toString! true -Testing with: (46) _level0 (object) +Testing with: (47) _level0 (object) 19: toString! _level0 19: toString! @@ -1109,24 +1137,24 @@ true true 19: toString! 19: valueOf! --2147483648 +0 19: toString! _level0 -Testing with: (47) _level0 (object) +Testing with: (48) ?????? (object) 20: toString! -[type Object] +?????? 20: toString! -[type Object] +?????? 20: toString! true 20: toString! true 20: toString! 20: valueOf! --2147483648 +0 20: toString! -[type Object] -Testing with: (48) [type Object] (object) +?????? +Testing with: (49) _level0 (object) 21: toString! [type Object] 21: toString! @@ -1137,10 +1165,10 @@ true true 21: toString! 21: valueOf! --2147483648 +0 21: toString! [type Object] -Testing with: (49) [type Object] (object) +Testing with: (50) [type Object] (object) 22: toString! [type Object] 22: toString! @@ -1151,10 +1179,10 @@ true true 22: toString! 22: valueOf! --2147483648 +0 22: toString! [type Object] -Testing with: (50) [type Object] (object) +Testing with: (51) [type Object] (object) 23: toString! [type Object] 23: toString! @@ -1165,10 +1193,10 @@ true true 23: toString! 23: valueOf! --2147483648 +0 23: toString! [type Object] -Testing with: (51) [type Object] (object) +Testing with: (52) [type Object] (object) 24: toString! [type Object] 24: toString! @@ -1179,10 +1207,10 @@ true true 24: toString! 24: valueOf! --2147483648 +0 24: toString! [type Object] -Testing with: (52) [type Object] (object) +Testing with: (53) [type Object] (object) 25: toString! [type Object] 25: toString! @@ -1193,10 +1221,10 @@ true true 25: toString! 25: valueOf! --2147483648 +0 25: toString! [type Object] -Testing with: (53) [type Object] (object) +Testing with: (54) [type Object] (object) 26: toString! [type Object] 26: toString! @@ -1207,6 +1235,20 @@ true true 26: toString! 26: valueOf! --2147483648 +0 26: toString! [type Object] +Testing with: (55) [type Object] (object) +27: toString! +[type Object] +27: toString! +[type Object] +27: toString! +true +27: toString! +true +27: toString! +27: valueOf! +0 +27: toString! +[type Object] diff --git a/test/trace/xml-other-8.swf b/test/trace/xml-other-8.swf new file mode 100644 index 0000000..7aa66a2 Binary files /dev/null and b/test/trace/xml-other-8.swf differ diff --git a/test/trace/xml-other-8.swf.trace b/test/trace/xml-other-8.swf.trace new file mode 100644 index 0000000..5e0a83c --- /dev/null +++ b/test/trace/xml-other-8.swf.trace @@ -0,0 +1,1254 @@ +valueOf called +toString called +toString called with +valueOf called with +0: valueOf! +1: valueOf! +2: valueOf! +3: valueOf! +4: valueOf! +5: valueOf! +6: valueOf! +7: valueOf! +8: valueOf! +9: valueOf! +10: valueOf! +11: valueOf! +12: valueOf! +13: valueOf! +14: valueOf! +15: valueOf! +16: valueOf! +17: valueOf! +18: valueOf! +19: valueOf! +20: valueOf! +21: valueOf! +22: valueOf! +22: toString! +23: valueOf! +23: toString! +24: valueOf! +24: toString! +25: valueOf! +25: toString! +26: valueOf! +26: toString! +27: valueOf! +27: toString! +<root /> + +<root /> +Constructing with: (0) undefined (undefined) + +Constructing with: (1) null (null) +null +Constructing with: (2) true (boolean) +true +Constructing with: (3) false (boolean) +false +Constructing with: (4) 0 (number) +0 +Constructing with: (5) 1 (number) +1 +Constructing with: (6) 0.5 (number) +0.5 +Constructing with: (7) -1 (number) +-1 +Constructing with: (8) -0.5 (number) +-0.5 +Constructing with: (9) Infinity (number) +Infinity +Constructing with: (10) -Infinity (number) +-Infinity +Constructing with: (11) NaN (number) +NaN +Constructing with: (12) (string) + +Constructing with: (13) 0 (string) +0 +Constructing with: (14) -0 (string) +-0 +Constructing with: (15) 0.0 (string) +0.0 +Constructing with: (16) 1 (string) +1 +Constructing with: (17) Hello World! (string) +Hello World! +Constructing with: (18) true (string) +true +Constructing with: (19) _level0 (string) +_level0 +Constructing with: (20) ?????? (string) +?????? +Constructing with: (21) _level0 (movieclip) +_level0 +Constructing with: (22) [object Object] (object) +[object Object] +Constructing with: (23) [type Function] (function) +[type Function] +Constructing with: (24) [type Object] (object) +toString called +[type Object] +Constructing with: (25) [type Object] (object) +toString called with +[type Object] +Constructing with: (26) [object Object] (object) +[object Object] +Constructing with: (27) undefined (object) +[type Object] +Constructing with: (28) undefined (object) +0: toString! +[type Object] +Constructing with: (29) null (object) +1: toString! +[type Object] +Constructing with: (30) true (object) +2: toString! +[type Object] +Constructing with: (31) false (object) +3: toString! +[type Object] +Constructing with: (32) 0 (object) +4: toString! +[type Object] +Constructing with: (33) 1 (object) +5: toString! +[type Object] +Constructing with: (34) 0.5 (object) +6: toString! +[type Object] +Constructing with: (35) -1 (object) +7: toString! +[type Object] +Constructing with: (36) -0.5 (object) +8: toString! +[type Object] +Constructing with: (37) Infinity (object) +9: toString! +[type Object] +Constructing with: (38) -Infinity (object) +10: toString! +[type Object] +Constructing with: (39) NaN (object) +11: toString! +[type Object] +Constructing with: (40) (object) +12: toString! + +Constructing with: (41) 0 (object) +13: toString! +0 +Constructing with: (42) -0 (object) +14: toString! +-0 +Constructing with: (43) 0.0 (object) +15: toString! +0.0 +Constructing with: (44) 1 (object) +16: toString! +1 +Constructing with: (45) Hello World! (object) +17: toString! +Hello World! +Constructing with: (46) true (object) +18: toString! +true +Constructing with: (47) _level0 (object) +19: toString! +_level0 +Constructing with: (48) ?????? (object) +20: toString! +?????? +Constructing with: (49) _level0 (object) +21: toString! +[type Object] +Constructing with: (50) [type Object] (object) +22: toString! +[type Object] +Constructing with: (51) [type Object] (object) +23: toString! +[type Object] +Constructing with: (52) [type Object] (object) +24: toString! +[type Object] +Constructing with: (53) [type Object] (object) +25: toString! +[type Object] +Constructing with: (54) [type Object] (object) +26: toString! +[type Object] +Constructing with: (55) [type Object] (object) +27: toString! +[type Object] +undefined +<?xml XML decl ?><!DOCTYPE doctype decl> + + +<element> + text more text + <child_element attribute="value" /> +</element> + +Constructing with: (0) undefined (undefined) +undefined +<?xml XML decl ?><!DOCTYPE doctype decl> + + +<element> + text more text + <child_element attribute="value" /> +</element> + +Constructing with: (1) null (null) +undefined +null +Constructing with: (2) true (boolean) +undefined +true +Constructing with: (3) false (boolean) +undefined +false +Constructing with: (4) 0 (number) +undefined +0 +Constructing with: (5) 1 (number) +undefined +1 +Constructing with: (6) 0.5 (number) +undefined +0.5 +Constructing with: (7) -1 (number) +undefined +-1 +Constructing with: (8) -0.5 (number) +undefined +-0.5 +Constructing with: (9) Infinity (number) +undefined +Infinity +Constructing with: (10) -Infinity (number) +undefined +-Infinity +Constructing with: (11) NaN (number) +undefined +NaN +Constructing with: (12) (string) +undefined + +Constructing with: (13) 0 (string) +undefined +0 +Constructing with: (14) -0 (string) +undefined +-0 +Constructing with: (15) 0.0 (string) +undefined +0.0 +Constructing with: (16) 1 (string) +undefined +1 +Constructing with: (17) Hello World! (string) +undefined +Hello World! +Constructing with: (18) true (string) +undefined +true +Constructing with: (19) _level0 (string) +undefined +_level0 +Constructing with: (20) ?????? (string) +undefined +?????? +Constructing with: (21) _level0 (movieclip) +undefined +_level0 +Constructing with: (22) [object Object] (object) +undefined +[object Object] +Constructing with: (23) [type Function] (function) +undefined +[type Function] +Constructing with: (24) [type Object] (object) +toString called +undefined +[type Object] +Constructing with: (25) [type Object] (object) +toString called with +undefined +[type Object] +Constructing with: (26) [object Object] (object) +undefined +[object Object] +Constructing with: (27) undefined (object) +undefined +[type Object] +Constructing with: (28) undefined (object) +0: toString! +undefined +[type Object] +Constructing with: (29) null (object) +1: toString! +undefined +[type Object] +Constructing with: (30) true (object) +2: toString! +undefined +[type Object] +Constructing with: (31) false (object) +3: toString! +undefined +[type Object] +Constructing with: (32) 0 (object) +4: toString! +undefined +[type Object] +Constructing with: (33) 1 (object) +5: toString! +undefined +[type Object] +Constructing with: (34) 0.5 (object) +6: toString! +undefined +[type Object] +Constructing with: (35) -1 (object) +7: toString! +undefined +[type Object] +Constructing with: (36) -0.5 (object) +8: toString! +undefined +[type Object] +Constructing with: (37) Infinity (object) +9: toString! +undefined +[type Object] +Constructing with: (38) -Infinity (object) +10: toString! +undefined +[type Object] +Constructing with: (39) NaN (object) +11: toString! +undefined +[type Object] +Constructing with: (40) (object) +12: toString! +undefined + +Constructing with: (41) 0 (object) +13: toString! +undefined +0 +Constructing with: (42) -0 (object) +14: toString! +undefined +-0 +Constructing with: (43) 0.0 (object) +15: toString! +undefined +0.0 +Constructing with: (44) 1 (object) +16: toString! +undefined +1 +Constructing with: (45) Hello World! (object) +17: toString! +undefined +Hello World! +Constructing with: (46) true (object) +18: toString! +undefined +true +Constructing with: (47) _level0 (object) +19: toString! +undefined +_level0 +Constructing with: (48) ?????? (object) +20: toString! +undefined +?????? +Constructing with: (49) _level0 (object) +21: toString! +undefined +[type Object] +Constructing with: (50) [type Object] (object) +22: toString! +undefined +[type Object] +Constructing with: (51) [type Object] (object) +23: toString! +undefined +[type Object] +Constructing with: (52) [type Object] (object) +24: toString! +undefined +[type Object] +Constructing with: (53) [type Object] (object) +25: toString! +undefined +[type Object] +Constructing with: (54) [type Object] (object) +26: toString! +undefined +[type Object] +Constructing with: (55) [type Object] (object) +27: toString! +undefined +[type Object] +<root /> +<name /> +<root /> +value +<root /> +undefined +undefined +<name /> +value +Creating with: (0) undefined (undefined) +undefined +undefined +Creating with: (1) null (null) +<null /> +null +Creating with: (2) true (boolean) +<true /> +true +Creating with: (3) false (boolean) +<false /> +false +Creating with: (4) 0 (number) +<0 /> +0 +Creating with: (5) 1 (number) +<1 /> +1 +Creating with: (6) 0.5 (number) +<0.5 /> +0.5 +Creating with: (7) -1 (number) +<-1 /> +-1 +Creating with: (8) -0.5 (number) +<-0.5 /> +-0.5 +Creating with: (9) Infinity (number) +<Infinity /> +Infinity +Creating with: (10) -Infinity (number) +<-Infinity /> +-Infinity +Creating with: (11) NaN (number) +<NaN /> +NaN +Creating with: (12) (string) +< /> + +Creating with: (13) 0 (string) +<0 /> +0 +Creating with: (14) -0 (string) +<-0 /> +-0 +Creating with: (15) 0.0 (string) +<0.0 /> +0.0 +Creating with: (16) 1 (string) +<1 /> +1 +Creating with: (17) Hello World! (string) +<Hello World! /> +Hello World! +Creating with: (18) true (string) +<true /> +true +Creating with: (19) _level0 (string) +<_level0 /> +_level0 +Creating with: (20) ?????? (string) +<?????? /> +?????? +Creating with: (21) _level0 (movieclip) +<_level0 /> +_level0 +Creating with: (22) [object Object] (object) +<[object Object] /> +[object Object] +Creating with: (23) [type Function] (function) +<[type Function] /> +[type Function] +Creating with: (24) [type Object] (object) +toString called +<[type Object] /> +toString called +[type Object] +Creating with: (25) [type Object] (object) +toString called with +<[type Object] /> +toString called with +[type Object] +Creating with: (26) [object Object] (object) +<[object Object] /> +[object Object] +Creating with: (27) undefined (object) +<[type Object] /> +[type Object] +Creating with: (28) undefined (object) +0: toString! +<[type Object] /> +0: toString! +[type Object] +Creating with: (29) null (object) +1: toString! +<[type Object] /> +1: toString! +[type Object] +Creating with: (30) true (object) +2: toString! +<[type Object] /> +2: toString! +[type Object] +Creating with: (31) false (object) +3: toString! +<[type Object] /> +3: toString! +[type Object] +Creating with: (32) 0 (object) +4: toString! +<[type Object] /> +4: toString! +[type Object] +Creating with: (33) 1 (object) +5: toString! +<[type Object] /> +5: toString! +[type Object] +Creating with: (34) 0.5 (object) +6: toString! +<[type Object] /> +6: toString! +[type Object] +Creating with: (35) -1 (object) +7: toString! +<[type Object] /> +7: toString! +[type Object] +Creating with: (36) -0.5 (object) +8: toString! +<[type Object] /> +8: toString! +[type Object] +Creating with: (37) Infinity (object) +9: toString! +<[type Object] /> +9: toString! +[type Object] +Creating with: (38) -Infinity (object) +10: toString! +<[type Object] /> +10: toString! +[type Object] +Creating with: (39) NaN (object) +11: toString! +<[type Object] /> +11: toString! +[type Object] +Creating with: (40) (object) +12: toString! +< /> +12: toString! + +Creating with: (41) 0 (object) +13: toString! +<0 /> +13: toString! +0 +Creating with: (42) -0 (object) +14: toString! +<-0 /> +14: toString! +-0 +Creating with: (43) 0.0 (object) +15: toString! +<0.0 /> +15: toString! +0.0 +Creating with: (44) 1 (object) +16: toString! +<1 /> +16: toString! +1 +Creating with: (45) Hello World! (object) +17: toString! +<Hello World! /> +17: toString! +Hello World! +Creating with: (46) true (object) +18: toString! +<true /> +18: toString! +true +Creating with: (47) _level0 (object) +19: toString! +<_level0 /> +19: toString! +_level0 +Creating with: (48) ?????? (object) +20: toString! +<?????? /> +20: toString! +?????? +Creating with: (49) _level0 (object) +21: toString! +<[type Object] /> +21: toString! +[type Object] +Creating with: (50) [type Object] (object) +22: toString! +<[type Object] /> +22: toString! +[type Object] +Creating with: (51) [type Object] (object) +23: toString! +<[type Object] /> +23: toString! +[type Object] +Creating with: (52) [type Object] (object) +24: toString! +<[type Object] /> +24: toString! +[type Object] +Creating with: (53) [type Object] (object) +25: toString! +<[type Object] /> +25: toString! +[type Object] +Creating with: (54) [type Object] (object) +26: toString! +<[type Object] /> +26: toString! +[type Object] +Creating with: (55) [type Object] (object) +27: toString! +<[type Object] /> +27: toString! +[type Object] +application/x-www-form-urlencoded +<!DOCTYPE doctype declaration > +false +undefined +0 +<?xml XML declaration ?> +application/x-www-form-urlencoded +undefined +false +undefined +0 +undefined +application/x-www-form-urlencoded +undefined +false +undefined +0 +undefined +Testing with: (0) undefined (undefined) +application/x-www-form-urlencoded +undefined +false +undefined +0 +undefined +Testing with: (1) null (null) +null +null +false +false +0 +null +Testing with: (2) true (boolean) +true +true +true +true +1 +true +Testing with: (3) false (boolean) +false +false +false +false +0 +false +Testing with: (4) 0 (number) +0 +0 +false +false +0 +0 +Testing with: (5) 1 (number) +1 +1 +true +true +1 +1 +Testing with: (6) 0.5 (number) +0.5 +0.5 +true +true +0 +0.5 +Testing with: (7) -1 (number) +-1 +-1 +true +true +-1 +-1 +Testing with: (8) -0.5 (number) +-0.5 +-0.5 +true +true +0 +-0.5 +Testing with: (9) Infinity (number) +Infinity +Infinity +true +true +0 +Infinity +Testing with: (10) -Infinity (number) +-Infinity +-Infinity +true +true +0 +-Infinity +Testing with: (11) NaN (number) +NaN +NaN +false +false +0 +NaN +Testing with: (12) (string) + + +false +false +0 + +Testing with: (13) 0 (string) +0 +0 +true +true +0 +0 +Testing with: (14) -0 (string) +-0 +-0 +true +true +0 +-0 +Testing with: (15) 0.0 (string) +0.0 +0.0 +true +true +0 +0.0 +Testing with: (16) 1 (string) +1 +1 +true +true +1 +1 +Testing with: (17) Hello World! (string) +Hello World! +Hello World! +true +true +0 +Hello World! +Testing with: (18) true (string) +true +true +true +true +0 +true +Testing with: (19) _level0 (string) +_level0 +_level0 +true +true +0 +_level0 +Testing with: (20) ?????? (string) +?????? +?????? +true +true +0 +?????? +Testing with: (21) _level0 (movieclip) +_level0 +_level0 +true +true +0 +_level0 +Testing with: (22) [object Object] (object) +[object Object] +[object Object] +true +true +0 +[object Object] +Testing with: (23) [type Function] (function) +[type Function] +[type Function] +true +true +0 +[type Function] +Testing with: (24) [type Object] (object) +toString called +[type Object] +toString called +[type Object] +toString called +true +toString called +true +toString called +valueOf called +0 +toString called +[type Object] +Testing with: (25) [type Object] (object) +toString called with +[type Object] +toString called with +[type Object] +toString called with +true +toString called with +true +toString called with +0 +toString called with +[type Object] +Testing with: (26) [object Object] (object) +[object Object] +[object Object] +true +true +valueOf called with +0 +[object Object] +Testing with: (27) undefined (object) +[type Object] +[type Object] +true +true +0 +[type Object] +Testing with: (28) undefined (object) +0: toString! +[type Object] +0: toString! +[type Object] +0: toString! +true +0: toString! +true +0: toString! +0: valueOf! +0 +0: toString! +[type Object] +Testing with: (29) null (object) +1: toString! +[type Object] +1: toString! +[type Object] +1: toString! +true +1: toString! +true +1: toString! +1: valueOf! +0 +1: toString! +[type Object] +Testing with: (30) true (object) +2: toString! +[type Object] +2: toString! +[type Object] +2: toString! +true +2: toString! +true +2: toString! +2: valueOf! +1 +2: toString! +[type Object] +Testing with: (31) false (object) +3: toString! +[type Object] +3: toString! +[type Object] +3: toString! +true +3: toString! +true +3: toString! +3: valueOf! +0 +3: toString! +[type Object] +Testing with: (32) 0 (object) +4: toString! +[type Object] +4: toString! +[type Object] +4: toString! +true +4: toString! +true +4: toString! +4: valueOf! +0 +4: toString! +[type Object] +Testing with: (33) 1 (object) +5: toString! +[type Object] +5: toString! +[type Object] +5: toString! +true +5: toString! +true +5: toString! +5: valueOf! +1 +5: toString! +[type Object] +Testing with: (34) 0.5 (object) +6: toString! +[type Object] +6: toString! +[type Object] +6: toString! +true +6: toString! +true +6: toString! +6: valueOf! +0 +6: toString! +[type Object] +Testing with: (35) -1 (object) +7: toString! +[type Object] +7: toString! +[type Object] +7: toString! +true +7: toString! +true +7: toString! +7: valueOf! +-1 +7: toString! +[type Object] +Testing with: (36) -0.5 (object) +8: toString! +[type Object] +8: toString! +[type Object] +8: toString! +true +8: toString! +true +8: toString! +8: valueOf! +0 +8: toString! +[type Object] +Testing with: (37) Infinity (object) +9: toString! +[type Object] +9: toString! +[type Object] +9: toString! +true +9: toString! +true +9: toString! +9: valueOf! +0 +9: toString! +[type Object] +Testing with: (38) -Infinity (object) +10: toString! +[type Object] +10: toString! +[type Object] +10: toString! +true +10: toString! +true +10: toString! +10: valueOf! +0 +10: toString! +[type Object] +Testing with: (39) NaN (object) +11: toString! +[type Object] +11: toString! +[type Object] +11: toString! +true +11: toString! +true +11: toString! +11: valueOf! +0 +11: toString! +[type Object] +Testing with: (40) (object) +12: toString! + +12: toString! + +12: toString! +true +12: toString! +true +12: toString! +12: valueOf! +0 +12: toString! + +Testing with: (41) 0 (object) +13: toString! +0 +13: toString! +0 +13: toString! +true +13: toString! +true +13: toString! +13: valueOf! +0 +13: toString! +0 +Testing with: (42) -0 (object) +14: toString! +-0 +14: toString! +-0 +14: toString! +true +14: toString! +true +14: toString! +14: valueOf! +0 +14: toString! +-0 +Testing with: (43) 0.0 (object) +15: toString! +0.0 +15: toString! +0.0 +15: toString! +true +15: toString! +true +15: toString! +15: valueOf! +0 +15: toString! +0.0 +Testing with: (44) 1 (object) +16: toString! +1 +16: toString! +1 +16: toString! +true +16: toString! +true +16: toString! +16: valueOf! +1 +16: toString! +1 +Testing with: (45) Hello World! (object) +17: toString! +Hello World! +17: toString! +Hello World! +17: toString! +true +17: toString! +true +17: toString! +17: valueOf! +0 +17: toString! +Hello World! +Testing with: (46) true (object) +18: toString! +true +18: toString! +true +18: toString! +true +18: toString! +true +18: toString! +18: valueOf! +0 +18: toString! +true +Testing with: (47) _level0 (object) +19: toString! +_level0 +19: toString! +_level0 +19: toString! +true +19: toString! +true +19: toString! +19: valueOf! +0 +19: toString! +_level0 +Testing with: (48) ?????? (object) +20: toString! +?????? +20: toString! +?????? +20: toString! +true +20: toString! +true +20: toString! +20: valueOf! +0 +20: toString! +?????? +Testing with: (49) _level0 (object) +21: toString! +[type Object] +21: toString! +[type Object] +21: toString! +true +21: toString! +true +21: toString! +21: valueOf! +0 +21: toString! +[type Object] +Testing with: (50) [type Object] (object) +22: toString! +[type Object] +22: toString! +[type Object] +22: toString! +true +22: toString! +true +22: toString! +22: valueOf! +0 +22: toString! +[type Object] +Testing with: (51) [type Object] (object) +23: toString! +[type Object] +23: toString! +[type Object] +23: toString! +true +23: toString! +true +23: toString! +23: valueOf! +0 +23: toString! +[type Object] +Testing with: (52) [type Object] (object) +24: toString! +[type Object] +24: toString! +[type Object] +24: toString! +true +24: toString! +true +24: toString! +24: valueOf! +0 +24: toString! +[type Object] +Testing with: (53) [type Object] (object) +25: toString! +[type Object] +25: toString! +[type Object] +25: toString! +true +25: toString! +true +25: toString! +25: valueOf! +0 +25: toString! +[type Object] +Testing with: (54) [type Object] (object) +26: toString! +[type Object] +26: toString! +[type Object] +26: toString! +true +26: toString! +true +26: toString! +26: valueOf! +0 +26: toString! +[type Object] +Testing with: (55) [type Object] (object) +27: toString! +[type Object] +27: toString! +[type Object] +27: toString! +true +27: toString! +true +27: toString! +27: valueOf! +0 +27: toString! +[type Object] diff --git a/test/trace/xml-parse-8.swf b/test/trace/xml-parse-8.swf new file mode 100644 index 0000000..5e24f0c Binary files /dev/null and b/test/trace/xml-parse-8.swf differ diff --git a/test/trace/xml-parse-8.swf.trace b/test/trace/xml-parse-8.swf.trace new file mode 100644 index 0000000..924e689 --- /dev/null +++ b/test/trace/xml-parse-8.swf.trace @@ -0,0 +1,860 @@ +### Running tests without ignoreWhite... +Loading: xml-parse-1.xml +Success: true +--- +452 +452 +docTypeDecl: %3C%21DOCTYPE%0A%20html%20PUBLIC%20%22%2D%2F%2FW3C%2F%2FDTD%20XHTML%201%2E1%2F%2FEN%22%0A%20%22http%3A%2F%2Fwww%2Ew3%2Eorg%2FTR%2Fxhtml11%2FDTD%2Fxhtml11%2Edtd%22%3E +ignoreWhite: true +loaded: true +status: 0 +xmlDecl: <?xml version="1.0" encoding="UTF-8"?> +--- +attributes: 0: +localName: null +namespaceURI: null +nodeName: null +nodeType: 1 +nodeValue: null +prefix: null +parentNode: undefined +firstChild: TAG(1): 'html' +lastChild: TAG(1): 'html' +nextSibling: undefined +previousSibling: undefined +childNodes: 1: TAG(1): 'html' +--- +attributes: 1: xmlns=http%3A%2F%2Fwww%2Ew3%2Eorg%2F1999%2Fxhtml +localName: html +namespaceURI: http://www.w3.org/1999/xhtml +nodeName: html +nodeType: 1 +nodeValue: null +prefix: +parentNode: TAG(1): 'null' +firstChild: TAG(1): 'head' +lastChild: TAG(1): 'body' +nextSibling: undefined +previousSibling: undefined +childNodes: 2: TAG(1): 'head',TAG(1): 'body' +--- +attributes: 0: +localName: head +namespaceURI: http://www.w3.org/1999/xhtml +nodeName: head +nodeType: 1 +nodeValue: null +prefix: +parentNode: TAG(1): 'html' +firstChild: TAG(1): 'title' +lastChild: TAG(1): 'link' +nextSibling: TAG(1): 'body' +previousSibling: undefined +childNodes: 2: TAG(1): 'title',TAG(1): 'link' +--- +attributes: 0: +localName: title +namespaceURI: http://www.w3.org/1999/xhtml +nodeName: title +nodeType: 1 +nodeValue: null +prefix: +parentNode: TAG(1): 'head' +firstChild: TEXT(3): 'Title is something' +lastChild: TEXT(3): 'Title is something' +nextSibling: TAG(1): 'link' +previousSibling: undefined +childNodes: 1: TEXT(3): 'Title is something' +--- +attributes: 0: +localName: null +namespaceURI: null +nodeName: null +nodeType: 3 +nodeValue: Title is something +prefix: null +parentNode: TAG(1): 'title' +firstChild: undefined +lastChild: undefined +nextSibling: undefined +previousSibling: undefined +childNodes: 0: +--- +attributes: 4: href=style%2Ecss&media=screen&rel=stylesheet&type=text%2Fcss +localName: link +namespaceURI: http://www.w3.org/1999/xhtml +nodeName: link +nodeType: 1 +nodeValue: null +prefix: +parentNode: TAG(1): 'head' +firstChild: undefined +lastChild: undefined +nextSibling: undefined +previousSibling: TAG(1): 'title' +childNodes: 0: +--- +attributes: 0: +localName: body +namespaceURI: http://www.w3.org/1999/xhtml +nodeName: body +nodeType: 1 +nodeValue: null +prefix: +parentNode: TAG(1): 'html' +firstChild: TAG(1): 'h1' +lastChild: TAG(1): 'p' +nextSibling: undefined +previousSibling: TAG(1): 'head' +childNodes: 2: TAG(1): 'h1',TAG(1): 'p' +--- +attributes: 1: id=main%5Ftopic +localName: h1 +namespaceURI: http://www.w3.org/1999/xhtml +nodeName: h1 +nodeType: 1 +nodeValue: null +prefix: +parentNode: TAG(1): 'body' +firstChild: TEXT(3): 'Main topic' +lastChild: TEXT(3): 'Main topic' +nextSibling: TAG(1): 'p' +previousSibling: undefined +childNodes: 1: TEXT(3): 'Main topic' +--- +attributes: 0: +localName: null +namespaceURI: null +nodeName: null +nodeType: 3 +nodeValue: Main topic +prefix: null +parentNode: TAG(1): 'h1' +firstChild: undefined +lastChild: undefined +nextSibling: undefined +previousSibling: undefined +childNodes: 0: +--- +attributes: 2: class=some%5Ftext&id=first%5Ftext%5Fblock +localName: p +namespaceURI: http://www.w3.org/1999/xhtml +nodeName: p +nodeType: 1 +nodeValue: null +prefix: +parentNode: TAG(1): 'body' +firstChild: TEXT(3): 'Some text' +lastChild: TEXT(3): 'Some text' +nextSibling: undefined +previousSibling: TAG(1): 'h1' +childNodes: 1: TEXT(3): 'Some text' +--- +attributes: 0: +localName: null +namespaceURI: null +nodeName: null +nodeType: 3 +nodeValue: Some text +prefix: null +parentNode: TAG(1): 'p' +firstChild: undefined +lastChild: undefined +nextSibling: undefined +previousSibling: undefined +childNodes: 0: +--- +Loading: xml-parse-2.xml +Success: true +--- +820 +820 +docTypeDecl: <!DOCTYPE foo [ <!ENTITY greeting "hello"> ]> +ignoreWhite: true +loaded: true +status: -9 +xmlDecl: <?xml version="1.0" encoding="UTF-8" ?> +--- +attributes: 0: +localName: null +namespaceURI: null +nodeName: null +nodeType: 1 +nodeValue: null +prefix: null +parentNode: undefined +firstChild: TEXT(3): 'cruft ' +lastChild: TAG(1): 'end_not_missing' +nextSibling: undefined +previousSibling: undefined +childNodes: 8: TEXT(3): 'cruft ',TAG(1): 'normal',TAG(1): 'entities',TAG(1): '??????',TAG(1): 'comment_inside_text',TAG(1): 'no_comment_inside_text',TAG(1): 'unescaped',TAG(1): 'end_not_missing' +--- +attributes: 0: +localName: null +namespaceURI: null +nodeName: null +nodeType: 3 +nodeValue: cruft +prefix: null +parentNode: TAG(1): 'null' +firstChild: undefined +lastChild: undefined +nextSibling: TAG(1): 'normal' +previousSibling: undefined +childNodes: 0: +--- +attributes: 0: +localName: normal +namespaceURI: +nodeName: normal +nodeType: 1 +nodeValue: null +prefix: +parentNode: TAG(1): 'null' +firstChild: TEXT(3): '%0A%20%20text%0A%20%20' +lastChild: TEXT(3): '%0A%20%20even%20more%20text%0A' +nextSibling: TAG(1): 'entities' +previousSibling: TEXT(3): 'cruft ' +childNodes: 5: TEXT(3): '%0A%20%20text%0A%20%20',TAG(1): 'child',TEXT(3): '%0A%20%20more%20text%0A%20%20',TAG(1): 'empty_element',TEXT(3): '%0A%20%20even%20more%20text%0A' +--- +attributes: 0: +localName: null +namespaceURI: null +nodeName: null +nodeType: 3 +nodeValue: %0A%20%20text%0A%20%20 +prefix: null +parentNode: TAG(1): 'normal' +firstChild: undefined +lastChild: undefined +nextSibling: TAG(1): 'child' +previousSibling: undefined +childNodes: 0: +--- +attributes: 2: attribute=value&second%5Fattribute=second%20value +localName: child +namespaceURI: +nodeName: child +nodeType: 1 +nodeValue: null +prefix: +parentNode: TAG(1): 'normal' +firstChild: TEXT(3): '%0A%20%20%20%20child%20text%0A%20%20' +lastChild: TEXT(3): '%0A%20%20%20%20child%20text%0A%20%20' +nextSibling: TEXT(3): '%0A%20%20more%20text%0A%20%20' +previousSibling: TEXT(3): '%0A%20%20text%0A%20%20' +childNodes: 1: TEXT(3): '%0A%20%20%20%20child%20text%0A%20%20' +--- +attributes: 0: +localName: null +namespaceURI: null +nodeName: null +nodeType: 3 +nodeValue: %0A%20%20%20%20child%20text%0A%20%20 +prefix: null +parentNode: TAG(1): 'child' +firstChild: undefined +lastChild: undefined +nextSibling: undefined +previousSibling: undefined +childNodes: 0: +--- +attributes: 0: +localName: null +namespaceURI: null +nodeName: null +nodeType: 3 +nodeValue: %0A%20%20more%20text%0A%20%20 +prefix: null +parentNode: TAG(1): 'normal' +firstChild: undefined +lastChild: undefined +nextSibling: TAG(1): 'empty_element' +previousSibling: TAG(1): 'child' +childNodes: 0: +--- +attributes: 1: empty%5Fattribute+localName: empty_element +namespaceURI: +nodeName: empty_element +nodeType: 1 +nodeValue: null +prefix: +parentNode: TAG(1): 'normal' +firstChild: undefined +lastChild: undefined +nextSibling: TEXT(3): '%0A%20%20even%20more%20text%0A' +previousSibling: TEXT(3): '%0A%20%20more%20text%0A%20%20' +childNodes: 0: +--- +attributes: 0: +localName: null +namespaceURI: null +nodeName: null +nodeType: 3 +nodeValue: %0A%20%20even%20more%20text%0A +prefix: null +parentNode: TAG(1): 'normal' +firstChild: undefined +lastChild: undefined +nextSibling: undefined +previousSibling: TAG(1): 'empty_element' +childNodes: 0: +--- +attributes: 1: entities%5Fattribute=%3C%20%3E%20%22%20%27%20%26%20%C2%A0 +localName: entities +namespaceURI: +nodeName: entities +nodeType: 1 +nodeValue: null +prefix: +parentNode: TAG(1): 'null' +firstChild: TEXT(3): '%0A%20%20%3C%20%3E%20%22%20%27%20%26%20%C2%A0%0A' +lastChild: TEXT(3): '%0A%20%20%3C%20%3E%20%22%20%27%20%26%20%C2%A0%0A' +nextSibling: TAG(1): '??????' +previousSibling: TAG(1): 'normal' +childNodes: 1: TEXT(3): '%0A%20%20%3C%20%3E%20%22%20%27%20%26%20%C2%A0%0A' +--- +attributes: 0: +localName: null +namespaceURI: null +nodeName: null +nodeType: 3 +nodeValue: %0A%20%20%3C%20%3E%20%22%20%27%20%26%20%C2%A0%0A +prefix: null +parentNode: TAG(1): 'entities' +firstChild: undefined +lastChild: undefined +nextSibling: undefined +previousSibling: undefined +childNodes: 0: +--- +attributes: 0: +localName: ?????? +namespaceURI: +nodeName: ?????? +nodeType: 1 +nodeValue: null +prefix: +parentNode: TAG(1): 'null' +firstChild: TEXT(3): '????????????' +lastChild: TEXT(3): '????????????' +nextSibling: TAG(1): 'comment_inside_text' +previousSibling: TAG(1): 'entities' +childNodes: 1: TEXT(3): '????????????' +--- +attributes: 0: +localName: null +namespaceURI: null +nodeName: null +nodeType: 3 +nodeValue: ???????????? +prefix: null +parentNode: TAG(1): '??????' +firstChild: undefined +lastChild: undefined +nextSibling: undefined +previousSibling: undefined +childNodes: 0: +--- +attributes: 0: +localName: comment_inside_text +namespaceURI: +nodeName: comment_inside_text +nodeType: 1 +nodeValue: null +prefix: +parentNode: TAG(1): 'null' +firstChild: TEXT(3): 'comment ' +lastChild: TEXT(3): 'text' +nextSibling: TAG(1): 'no_comment_inside_text' +previousSibling: TAG(1): '??????' +childNodes: 2: TEXT(3): 'comment ',TEXT(3): 'text' +--- +attributes: 0: +localName: null +namespaceURI: null +nodeName: null +nodeType: 3 +nodeValue: comment +prefix: null +parentNode: TAG(1): 'comment_inside_text' +firstChild: undefined +lastChild: undefined +nextSibling: TEXT(3): 'text' +previousSibling: undefined +childNodes: 0: +--- +attributes: 0: +localName: null +namespaceURI: null +nodeName: null +nodeType: 3 +nodeValue: text +prefix: null +parentNode: TAG(1): 'comment_inside_text' +firstChild: undefined +lastChild: undefined +nextSibling: undefined +previousSibling: TEXT(3): 'comment ' +childNodes: 0: +--- +attributes: 0: +localName: no_comment_inside_text +namespaceURI: +nodeName: no_comment_inside_text +nodeType: 1 +nodeValue: null +prefix: +parentNode: TAG(1): 'null' +firstChild: TEXT(3): 'comment text' +lastChild: TEXT(3): 'comment text' +nextSibling: TAG(1): 'unescaped' +previousSibling: TAG(1): 'comment_inside_text' +childNodes: 1: TEXT(3): 'comment text' +--- +attributes: 0: +localName: null +namespaceURI: null +nodeName: null +nodeType: 3 +nodeValue: comment text +prefix: null +parentNode: TAG(1): 'no_comment_inside_text' +firstChild: undefined +lastChild: undefined +nextSibling: undefined +previousSibling: undefined +childNodes: 0: +--- +attributes: 1: entities=%3E%20%27%20%26%20%C2%A0%28nbsp%29 +localName: unescaped +namespaceURI: +nodeName: unescaped +nodeType: 1 +nodeValue: null +prefix: +parentNode: TAG(1): 'null' +firstChild: TEXT(3): '%0A%20%20%3E%20%22%20%27%20%26%20%C2%A0%28nbsp%29%0A' +lastChild: TEXT(3): '%0A%20%20%3E%20%22%20%27%20%26%20%C2%A0%28nbsp%29%0A' +nextSibling: TAG(1): 'end_not_missing' +previousSibling: TAG(1): 'no_comment_inside_text' +childNodes: 1: TEXT(3): '%0A%20%20%3E%20%22%20%27%20%26%20%C2%A0%28nbsp%29%0A' +--- +attributes: 0: +localName: null +namespaceURI: null +nodeName: null +nodeType: 3 +nodeValue: %0A%20%20%3E%20%22%20%27%20%26%20%C2%A0%28nbsp%29%0A +prefix: null +parentNode: TAG(1): 'unescaped' +firstChild: undefined +lastChild: undefined +nextSibling: undefined +previousSibling: undefined +childNodes: 0: +--- +attributes: 0: +localName: end_not_missing +namespaceURI: +nodeName: end_not_missing +nodeType: 1 +nodeValue: null +prefix: +parentNode: TAG(1): 'null' +firstChild: TEXT(3): '%0A%20%20text%0A%20%20' +lastChild: TAG(1): 'end_missing' +nextSibling: undefined +previousSibling: TAG(1): 'unescaped' +childNodes: 2: TEXT(3): '%0A%20%20text%0A%20%20',TAG(1): 'end_missing' +--- +attributes: 0: +localName: null +namespaceURI: null +nodeName: null +nodeType: 3 +nodeValue: %0A%20%20text%0A%20%20 +prefix: null +parentNode: TAG(1): 'end_not_missing' +firstChild: undefined +lastChild: undefined +nextSibling: TAG(1): 'end_missing' +previousSibling: undefined +childNodes: 0: +--- +attributes: 0: +localName: end_missing +namespaceURI: +nodeName: end_missing +nodeType: 1 +nodeValue: null +prefix: +parentNode: TAG(1): 'end_not_missing' +firstChild: TEXT(3): '%0A%20%20%20%20text%0A' +lastChild: TEXT(3): '%0A%20%20%20%20text%0A' +nextSibling: undefined +previousSibling: TEXT(3): '%0A%20%20text%0A%20%20' +childNodes: 1: TEXT(3): '%0A%20%20%20%20text%0A' +--- +attributes: 0: +localName: null +namespaceURI: null +nodeName: null +nodeType: 3 +nodeValue: %0A%20%20%20%20text%0A +prefix: null +parentNode: TAG(1): 'end_missing' +firstChild: undefined +lastChild: undefined +nextSibling: undefined +previousSibling: undefined +childNodes: 0: +--- +Loading: xml-parse-3.xml +Success: false +--- +0 +undefined +docTypeDecl: <!DOCTYPE foo [ <!ENTITY greeting "hello"> ]> +ignoreWhite: true +loaded: false +status: -9 +xmlDecl: <?xml version="1.0" encoding="UTF-8" ?> +--- +attributes: 0: +localName: null +namespaceURI: null +nodeName: null +nodeType: 1 +nodeValue: null +prefix: null +parentNode: undefined +firstChild: TEXT(3): 'cruft ' +lastChild: TAG(1): 'end_not_missing' +nextSibling: undefined +previousSibling: undefined +childNodes: 8: TEXT(3): 'cruft ',TAG(1): 'normal',TAG(1): 'entities',TAG(1): '??????',TAG(1): 'comment_inside_text',TAG(1): 'no_comment_inside_text',TAG(1): 'unescaped',TAG(1): 'end_not_missing' +--- +attributes: 0: +localName: null +namespaceURI: null +nodeName: null +nodeType: 3 +nodeValue: cruft +prefix: null +parentNode: TAG(1): 'null' +firstChild: undefined +lastChild: undefined +nextSibling: TAG(1): 'normal' +previousSibling: undefined +childNodes: 0: +--- +attributes: 0: +localName: normal +namespaceURI: +nodeName: normal +nodeType: 1 +nodeValue: null +prefix: +parentNode: TAG(1): 'null' +firstChild: TEXT(3): '%0A%20%20text%0A%20%20' +lastChild: TEXT(3): '%0A%20%20even%20more%20text%0A' +nextSibling: TAG(1): 'entities' +previousSibling: TEXT(3): 'cruft ' +childNodes: 5: TEXT(3): '%0A%20%20text%0A%20%20',TAG(1): 'child',TEXT(3): '%0A%20%20more%20text%0A%20%20',TAG(1): 'empty_element',TEXT(3): '%0A%20%20even%20more%20text%0A' +--- +attributes: 0: +localName: null +namespaceURI: null +nodeName: null +nodeType: 3 +nodeValue: %0A%20%20text%0A%20%20 +prefix: null +parentNode: TAG(1): 'normal' +firstChild: undefined +lastChild: undefined +nextSibling: TAG(1): 'child' +previousSibling: undefined +childNodes: 0: +--- +attributes: 2: attribute=value&second%5Fattribute=second%20value +localName: child +namespaceURI: +nodeName: child +nodeType: 1 +nodeValue: null +prefix: +parentNode: TAG(1): 'normal' +firstChild: TEXT(3): '%0A%20%20%20%20child%20text%0A%20%20' +lastChild: TEXT(3): '%0A%20%20%20%20child%20text%0A%20%20' +nextSibling: TEXT(3): '%0A%20%20more%20text%0A%20%20' +previousSibling: TEXT(3): '%0A%20%20text%0A%20%20' +childNodes: 1: TEXT(3): '%0A%20%20%20%20child%20text%0A%20%20' +--- +attributes: 0: +localName: null +namespaceURI: null +nodeName: null +nodeType: 3 +nodeValue: %0A%20%20%20%20child%20text%0A%20%20 +prefix: null +parentNode: TAG(1): 'child' +firstChild: undefined +lastChild: undefined +nextSibling: undefined +previousSibling: undefined +childNodes: 0: +--- +attributes: 0: +localName: null +namespaceURI: null +nodeName: null +nodeType: 3 +nodeValue: %0A%20%20more%20text%0A%20%20 +prefix: null +parentNode: TAG(1): 'normal' +firstChild: undefined +lastChild: undefined +nextSibling: TAG(1): 'empty_element' +previousSibling: TAG(1): 'child' +childNodes: 0: +--- +attributes: 1: empty%5Fattribute+localName: empty_element +namespaceURI: +nodeName: empty_element +nodeType: 1 +nodeValue: null +prefix: +parentNode: TAG(1): 'normal' +firstChild: undefined +lastChild: undefined +nextSibling: TEXT(3): '%0A%20%20even%20more%20text%0A' +previousSibling: TEXT(3): '%0A%20%20more%20text%0A%20%20' +childNodes: 0: +--- +attributes: 0: +localName: null +namespaceURI: null +nodeName: null +nodeType: 3 +nodeValue: %0A%20%20even%20more%20text%0A +prefix: null +parentNode: TAG(1): 'normal' +firstChild: undefined +lastChild: undefined +nextSibling: undefined +previousSibling: TAG(1): 'empty_element' +childNodes: 0: +--- +attributes: 1: entities%5Fattribute=%3C%20%3E%20%22%20%27%20%26%20%C2%A0 +localName: entities +namespaceURI: +nodeName: entities +nodeType: 1 +nodeValue: null +prefix: +parentNode: TAG(1): 'null' +firstChild: TEXT(3): '%0A%20%20%3C%20%3E%20%22%20%27%20%26%20%C2%A0%0A' +lastChild: TEXT(3): '%0A%20%20%3C%20%3E%20%22%20%27%20%26%20%C2%A0%0A' +nextSibling: TAG(1): '??????' +previousSibling: TAG(1): 'normal' +childNodes: 1: TEXT(3): '%0A%20%20%3C%20%3E%20%22%20%27%20%26%20%C2%A0%0A' +--- +attributes: 0: +localName: null +namespaceURI: null +nodeName: null +nodeType: 3 +nodeValue: %0A%20%20%3C%20%3E%20%22%20%27%20%26%20%C2%A0%0A +prefix: null +parentNode: TAG(1): 'entities' +firstChild: undefined +lastChild: undefined +nextSibling: undefined +previousSibling: undefined +childNodes: 0: +--- +attributes: 0: +localName: ?????? +namespaceURI: +nodeName: ?????? +nodeType: 1 +nodeValue: null +prefix: +parentNode: TAG(1): 'null' +firstChild: TEXT(3): '????????????' +lastChild: TEXT(3): '????????????' +nextSibling: TAG(1): 'comment_inside_text' +previousSibling: TAG(1): 'entities' +childNodes: 1: TEXT(3): '????????????' +--- +attributes: 0: +localName: null +namespaceURI: null +nodeName: null +nodeType: 3 +nodeValue: ???????????? +prefix: null +parentNode: TAG(1): '??????' +firstChild: undefined +lastChild: undefined +nextSibling: undefined +previousSibling: undefined +childNodes: 0: +--- +attributes: 0: +localName: comment_inside_text +namespaceURI: +nodeName: comment_inside_text +nodeType: 1 +nodeValue: null +prefix: +parentNode: TAG(1): 'null' +firstChild: TEXT(3): 'comment ' +lastChild: TEXT(3): 'text' +nextSibling: TAG(1): 'no_comment_inside_text' +previousSibling: TAG(1): '??????' +childNodes: 2: TEXT(3): 'comment ',TEXT(3): 'text' +--- +attributes: 0: +localName: null +namespaceURI: null +nodeName: null +nodeType: 3 +nodeValue: comment +prefix: null +parentNode: TAG(1): 'comment_inside_text' +firstChild: undefined +lastChild: undefined +nextSibling: TEXT(3): 'text' +previousSibling: undefined +childNodes: 0: +--- +attributes: 0: +localName: null +namespaceURI: null +nodeName: null +nodeType: 3 +nodeValue: text +prefix: null +parentNode: TAG(1): 'comment_inside_text' +firstChild: undefined +lastChild: undefined +nextSibling: undefined +previousSibling: TEXT(3): 'comment ' +childNodes: 0: +--- +attributes: 0: +localName: no_comment_inside_text +namespaceURI: +nodeName: no_comment_inside_text +nodeType: 1 +nodeValue: null +prefix: +parentNode: TAG(1): 'null' +firstChild: TEXT(3): 'comment text' +lastChild: TEXT(3): 'comment text' +nextSibling: TAG(1): 'unescaped' +previousSibling: TAG(1): 'comment_inside_text' +childNodes: 1: TEXT(3): 'comment text' +--- +attributes: 0: +localName: null +namespaceURI: null +nodeName: null +nodeType: 3 +nodeValue: comment text +prefix: null +parentNode: TAG(1): 'no_comment_inside_text' +firstChild: undefined +lastChild: undefined +nextSibling: undefined +previousSibling: undefined +childNodes: 0: +--- +attributes: 1: entities=%3E%20%27%20%26%20%C2%A0%28nbsp%29 +localName: unescaped +namespaceURI: +nodeName: unescaped +nodeType: 1 +nodeValue: null +prefix: +parentNode: TAG(1): 'null' +firstChild: TEXT(3): '%0A%20%20%3E%20%22%20%27%20%26%20%C2%A0%28nbsp%29%0A' +lastChild: TEXT(3): '%0A%20%20%3E%20%22%20%27%20%26%20%C2%A0%28nbsp%29%0A' +nextSibling: TAG(1): 'end_not_missing' +previousSibling: TAG(1): 'no_comment_inside_text' +childNodes: 1: TEXT(3): '%0A%20%20%3E%20%22%20%27%20%26%20%C2%A0%28nbsp%29%0A' +--- +attributes: 0: +localName: null +namespaceURI: null +nodeName: null +nodeType: 3 +nodeValue: %0A%20%20%3E%20%22%20%27%20%26%20%C2%A0%28nbsp%29%0A +prefix: null +parentNode: TAG(1): 'unescaped' +firstChild: undefined +lastChild: undefined +nextSibling: undefined +previousSibling: undefined +childNodes: 0: +--- +attributes: 0: +localName: end_not_missing +namespaceURI: +nodeName: end_not_missing +nodeType: 1 +nodeValue: null +prefix: +parentNode: TAG(1): 'null' +firstChild: TEXT(3): '%0A%20%20text%0A%20%20' +lastChild: TAG(1): 'end_missing' +nextSibling: undefined +previousSibling: TAG(1): 'unescaped' +childNodes: 2: TEXT(3): '%0A%20%20text%0A%20%20',TAG(1): 'end_missing' +--- +attributes: 0: +localName: null +namespaceURI: null +nodeName: null +nodeType: 3 +nodeValue: %0A%20%20text%0A%20%20 +prefix: null +parentNode: TAG(1): 'end_not_missing' +firstChild: undefined +lastChild: undefined +nextSibling: TAG(1): 'end_missing' +previousSibling: undefined +childNodes: 0: +--- +attributes: 0: +localName: end_missing +namespaceURI: +nodeName: end_missing +nodeType: 1 +nodeValue: null +prefix: +parentNode: TAG(1): 'end_not_missing' +firstChild: TEXT(3): '%0A%20%20%20%20text%0A' +lastChild: TEXT(3): '%0A%20%20%20%20text%0A' +nextSibling: undefined +previousSibling: TEXT(3): '%0A%20%20text%0A%20%20' +childNodes: 1: TEXT(3): '%0A%20%20%20%20text%0A' +--- +attributes: 0: +localName: null +namespaceURI: null +nodeName: null +nodeType: 3 +nodeValue: %0A%20%20%20%20text%0A +prefix: null +parentNode: TAG(1): 'end_missing' +firstChild: undefined +lastChild: undefined +nextSibling: undefined +previousSibling: undefined +childNodes: 0: +--- commit e7a99e89c7b79a588620743d69d5a62b1e484bdc Author: Pekka Lampila <pekka.lampila at iki.fi> Date: Thu Dec 20 16:49:08 2007 +0200 Fix XML.status' set function diff --git a/libswfdec/swfdec_xml.c b/libswfdec/swfdec_xml.c index 3acf0f3..cbecf86 100644 --- a/libswfdec/swfdec_xml.c +++ b/libswfdec/swfdec_xml.c @@ -348,19 +348,12 @@ swfdec_xml_set_status (SwfdecAsContext *cx, SwfdecAsObject *object, if (argc < 1) return; - // special case - if (SWFDEC_AS_VALUE_IS_UNDEFINED (&argv[0])) - return; - - // special case, call toString of objects - if (SWFDEC_AS_VALUE_IS_OBJECT (&argv[0])) - swfdec_as_value_to_string (cx, &argv[0]); - + swfdec_as_value_to_string (cx, &argv[0]); d = swfdec_as_value_to_number (cx, &argv[0]); if (!isfinite (d)) - SWFDEC_XML (object)->status = G_MININT32; + SWFDEC_XML (object)->status = 0; else - SWFDEC_XML (object)->status = (int) d; + SWFDEC_XML (object)->status = d; } static const char * commit 92fb23847d15f6f8fe3a6ce6f291ff03ced1858c Author: Pekka Lampila <pekka.lampila at iki.fi> Date: Thu Dec 20 16:35:53 2007 +0200 Don't allow creation of loops in XMLNode when version is 8 diff --git a/libswfdec/swfdec_xml_node.c b/libswfdec/swfdec_xml_node.c index 99d7f3e..5c74870 100644 --- a/libswfdec/swfdec_xml_node.c +++ b/libswfdec/swfdec_xml_node.c @@ -742,6 +742,15 @@ swfdec_xml_node_insertAt (SwfdecXmlNode *node, SwfdecXmlNode *child, gint32 ind) g_assert (SWFDEC_IS_VALID_XML_NODE (child)); g_assert (ind >= 0); + if (SWFDEC_AS_OBJECT (node)->context->version >= 8) { + SwfdecXmlNode *parent = node; + while (parent != NULL) { + if (parent == child) + return; + parent = parent->parent; + } + } + // remove the previous parent of the child swfdec_xml_node_removeNode (child); @@ -799,22 +808,12 @@ swfdec_xml_node_insertBefore (SwfdecAsContext *cx, SwfdecAsObject *object, void swfdec_xml_node_appendChild (SwfdecXmlNode *node, SwfdecXmlNode *child) { - SwfdecAsValue val; - g_return_if_fail (SWFDEC_IS_VALID_XML_NODE (node)); g_return_if_fail (SWFDEC_IS_VALID_XML_NODE (child)); g_return_if_fail (node->children != NULL); - // remove the previous parent of the child - swfdec_xml_node_removeNode (child); - - // append child to node's childNodes array - SWFDEC_AS_VALUE_SET_OBJECT (&val, SWFDEC_AS_OBJECT (child)); - swfdec_as_array_push (node->children, &val); - swfdec_xml_node_update_childNodes (node); - - // set node as parent of child - child->parent = node; + swfdec_xml_node_insertAt (node, child, + swfdec_as_array_get_length (node->children)); } SWFDEC_AS_NATIVE (253, 4, swfdec_xml_node_do_appendChild) commit 5dbab5d073bc0ce86ee47830d91a5ae30c3fdc78 Author: Pekka Lampila <pekka.lampila at iki.fi> Date: Thu Dec 20 16:17:56 2007 +0200 Remove an unnecessary SWFDEC_FIXME diff --git a/libswfdec/swfdec_xml.c b/libswfdec/swfdec_xml.c index 926e7ac..3acf0f3 100644 --- a/libswfdec/swfdec_xml.c +++ b/libswfdec/swfdec_xml.c @@ -822,10 +822,8 @@ void swfdec_xml_construct (SwfdecAsContext *cx, SwfdecAsObject *object, guint argc, SwfdecAsValue *argv, SwfdecAsValue *ret) { - if (!swfdec_as_context_is_constructing (cx)) { - SWFDEC_FIXME ("What do we do if not constructing?"); + if (!swfdec_as_context_is_constructing (cx)) return; - } g_assert (SWFDEC_IS_XML (object)); commit ec918d4614e81ece24caa5d64da06163e29342b9 Author: Pekka Lampila <pekka.lampila at iki.fi> Date: Thu Dec 20 13:31:20 2007 +0200 Add array-sort-on test diff --git a/test/trace/Makefile.am b/test/trace/Makefile.am index 774f5b7..000b0b2 100644 --- a/test/trace/Makefile.am +++ b/test/trace/Makefile.am @@ -139,6 +139,15 @@ EXTRA_DIST = \ array-properties-7.swf.trace \ array-properties-8.swf \ array-properties-8.swf.trace \ + array-sort-on.as \ + array-sort-on-5.swf \ + array-sort-on-5.swf.trace \ + array-sort-on-6.swf \ + array-sort-on-6.swf.trace \ + array-sort-on-7.swf \ + array-sort-on-7.swf.trace \ + array-sort-on-8.swf \ + array-sort-on-8.swf.trace \ array2.as \ array2-5.swf \ array2-5.swf.trace \ diff --git a/test/trace/array-sort-on-5.swf b/test/trace/array-sort-on-5.swf new file mode 100644 index 0000000..4708517 Binary files /dev/null and b/test/trace/array-sort-on-5.swf differ diff --git a/test/trace/array-sort-on-5.swf.trace b/test/trace/array-sort-on-5.swf.trace new file mode 100644 index 0000000..331f298 --- /dev/null +++ b/test/trace/array-sort-on-5.swf.trace @@ -0,0 +1,5 @@ +a,b,c +undefined +b,a,c +a,b,c,d,e +b,a,d,c,e diff --git a/test/trace/array-sort-on-6.swf b/test/trace/array-sort-on-6.swf new file mode 100644 index 0000000..e8be64e Binary files /dev/null and b/test/trace/array-sort-on-6.swf differ diff --git a/test/trace/array-sort-on-6.swf.trace b/test/trace/array-sort-on-6.swf.trace new file mode 100644 index 0000000..331f298 --- /dev/null +++ b/test/trace/array-sort-on-6.swf.trace @@ -0,0 +1,5 @@ +a,b,c +undefined +b,a,c +a,b,c,d,e +b,a,d,c,e diff --git a/test/trace/array-sort-on-7.swf b/test/trace/array-sort-on-7.swf new file mode 100644 index 0000000..7cf6538 Binary files /dev/null and b/test/trace/array-sort-on-7.swf differ diff --git a/test/trace/array-sort-on-7.swf.trace b/test/trace/array-sort-on-7.swf.trace new file mode 100644 index 0000000..331f298 --- /dev/null +++ b/test/trace/array-sort-on-7.swf.trace @@ -0,0 +1,5 @@ +a,b,c +undefined +b,a,c +a,b,c,d,e +b,a,d,c,e diff --git a/test/trace/array-sort-on-8.swf b/test/trace/array-sort-on-8.swf new file mode 100644 index 0000000..31a1b54 Binary files /dev/null and b/test/trace/array-sort-on-8.swf differ diff --git a/test/trace/array-sort-on-8.swf.trace b/test/trace/array-sort-on-8.swf.trace new file mode 100644 index 0000000..331f298 --- /dev/null +++ b/test/trace/array-sort-on-8.swf.trace @@ -0,0 +1,5 @@ +a,b,c +undefined +b,a,c +a,b,c,d,e +b,a,d,c,e diff --git a/test/trace/array-sort-on.as b/test/trace/array-sort-on.as new file mode 100644 index 0000000..95b7a21 --- /dev/null +++ b/test/trace/array-sort-on.as @@ -0,0 +1,30 @@ +// makeswf -v 7 -r 1 -o array-sort-on-7.swf array-sort-on.as + +var a = new Array (); +a[0] = { a: 2 }; +a[1] = { a: 1 }; +a[2] = { a: 3 }; +a[0].toString = function () { return "a"; }; +a[1].toString = function () { return "b"; }; +a[2].toString = function () { return "c"; }; + +trace (a); +trace (a.sortOn ()); +trace (a.sortOn ("a")); + +var a = new Array (); +a[0] = { a: 2, b: 1, c: 1 }; +a[1] = { a: 1, b: 4, c: 2 }; +a[2] = { a: 3, b: 2, c: 3 }; +a[3] = { a: 2, b: 2, c: 3 }; +a[4] = { a: 3, b: 2, c: 4 }; +a[0].toString = function () { return "a"; }; +a[1].toString = function () { return "b"; }; +a[2].toString = function () { return "c"; }; +a[3].toString = function () { return "d"; }; +a[4].toString = function () { return "e"; }; + +trace (a); +trace (a.sortOn (["a", "b", "c"])); + +loadMovie ("FSCommand:quit", ""); commit 6205c8de468e18e130e423fffdec6d7e5391ecae Author: Pekka Lampila <pekka.lampila at iki.fi> Date: Thu Dec 20 13:30:55 2007 +0200 Expand array2 test somewhat and make it work correctly in version 5 diff --git a/test/trace/array2-5.swf b/test/trace/array2-5.swf index 50d48ba..c14828b 100644 Binary files a/test/trace/array2-5.swf and b/test/trace/array2-5.swf differ diff --git a/test/trace/array2-5.swf.trace b/test/trace/array2-5.swf.trace index 6768915..3aa5771 100644 --- a/test/trace/array2-5.swf.trace +++ b/test/trace/array2-5.swf.trace @@ -1,569 +1,576 @@ -[, , , , , , , , , , , , , , , , , , , ] -[] -[] -[] -[] -[] -[] -[] -[, , , , , , , , , , , , ] -[, , , , , , , , , , , , , ] +## Static properties +1 +2 +4 +8 +16 +3 +16 +## Contructor +# Normal usage [] [, , , , ] -[[], [], []] +[1, b, [object Object]] [] [, , , , ] -[[], [], []] +[1, b, [object Object]] [] -[[], [], []] -[, , , , , , , , , , , , , , ] +[1, b, [object Object]] +# Special cases [, , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , ] [] -[[]] -[[]] -[[]] +[3] +[3] +[3] [, , ] [, , ] [, , ] -[[], [[], [], [[], []]]] -[, , , , , , , , ] -[, , , , , , , , , , , , , ] -[] -[] -[] -[] -[] -[] +[[], [a, b, [1, 2]]] +## length +# Normal usage +4 +3 +1337 +0 +[] +10 [, , , , , , , , , ] -[, , , , , , , , , , , , , , ] -[, , , , , , , , , []] +# Special cases +[, , , , , , , , , 1] [, , , , ] undefined [, , , , , , , , , ] [] +-4 [] +-1 +[1, b, c, , ] +3.4 +[1, b, c, , ] +3.5 +[1, b, c, , ] +3.6 [] +[object Object] [] -[[], [], [], , ] -[] -[[], [], [], , ] -[] -[[], [], [], , ] -[] -[] -[] -[] -[, , ] -[[], [], []] -[] +har +[1, b, c] +3 [] null [] undefined -[, , , , , , , , , , ] -[, , , , , , , , , , , , , ] -[, , , , ] -[, , , , , , , , , , , , , , ] -[] -[, , , , , , , , , , , , , , , , , , ] -[, , , , , , ] -[, , , , , , , , , , , , , ] -[, , , , ] -[, , , , ] -[, , , , , , , , , , , , , , ] -[] -[] -[, , , , , , ] -[, , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , ] -[, , , , , , , , , , ] -[, , ] -[, , , , , , , , ] -[, , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , ] -[, , , , , , , , , , , , , , , , , , ] -[, , , , , , , , , , , , , , , , , , ] -[, , , , , , ] -[, , , , , , , , , , , , , ] -[] -[[], [], [], []] -[] -[[], [], [], [], []] -[, , , , , , , , , , , , , , ] -[] -[[], [], [], [], []] -[] -[[], [], [], [], []] -[] -[[], [], [], [], [], [[], [], []]] -[] +## toString +# Normal usage +a,b,c +# Special cases + +,,,,,,,,,,,,,,,,,,, +## join +# Normal usage +a,b,c +a:b:c +# Special cases + + +131b313 +1[object Object]b[object Object]3 +1nullbnull3 +1b3 +1lalblal3 +1[object Object]b[object Object]3 +,,,,,,,,,,,,,,,,,,, +::::::::::::::::::: +## Push +# Normal usage +4 +[1, 2, 3, 4] +5 +[1, 2, 3, 4, a] +# Special cases +5 +[1, 2, 3, 4, 5] +5 +[1, 2, 3, 4, 5] +6 +[1, 2, 3, 4, 5, [a, b, c]] +1 undefined -[[, , , , , , ]] -[] +[weirder] +0 undefined [] -[] -[[]] -[] -[, , , , , []] -[] -[] -[] -[, , , , , ] -[, , , , , , , , , , , , , ] -[] -[[], [], []] -[] -[[], []] -[, , , , , , , , , , , , , , ] +1 +[6] +6 +[, , , , , 6] +-2 +x +-2 +## Pop +# Normal usage +4 +[1, b, c] +c +[1, b] +# Special cases undefined [] undefined [] -[] -[[], [], []] -[] -[[], []] -[, , , , , , , , , ] -[, , , , , , , , , , , , , ] -[] -[[], [], [], []] -[] -[[], [], [], [], []] -[, , , , , , , , , , , , , , ] -[] -[[], [], [], [], []] -[] -[[], [], [], [], []] -[] -[[[], [], []], [], [], [], [], []] -[] -[[]] -[] -[[], , , , , ] -[, , , , , , , ] -[, , , , , , , , , , , , , ] -[] -[[], [], []] -[] -[[], []] -[, , , , , , , , , , , , , , ] +4 +[1, b, c] +c +[1, b] +## Unshift +# Normal usage +4 +[4, 1, 2, 3] +5 +[a, 4, 1, 2, 3] +# Special cases +5 +[4, 5, 1, 2, 3] +5 +[4, 5, 1, 2, 3] +6 +[[a, b, c], 4, 5, 1, 2, 3] +1 +[6] +6 +[6, , , , , ] +## Shift +# Normal usage +1 +[b, c, 4] +b +[c, 4] +# Special cases undefined [] +1 +[b, c, 4] +b +[c, 4] +## Reverse +# Normal usage +[4, c, b, 1] +[4, c, b, 1] +[c, [object Object], 1] +[c, [object Object], 1] +# Special cases +[] +[] +[a] +[a] +[[[a], b]] +[[[a], b]] +[4, c, b, 1] +[4, c, b, 1] +[4, c, b, 1] +[4, c, b, 1] +## Concat +# Normal usage +[1, b, c, 4, 1, [object Object], c] +[1, b, c, 4] +[1, [object Object], c] +[1, b, c, 4, 1, [object Object], c] +[1, b, c, 4] +# Special cases +[] +[] +[] +[1, b, c, 4, 1, b, c, 4] +[1, b, c, 4] +[1, [b, c], 4, [1, [object Object]], c] +[1, [b, c], 4] +[[1, [object Object]], c] +## Slice +# Normal usage +[b, c] +[1, b, c, 4] +[1, b] +[1, b, c, 4] +[c, 4] +[1, b, c, 4] +# Special cases +[1, b, c, 4] +[1, b, c, 4] +[1, b, c, 4] +[1, b, c, 4] +[1, b] +[1, b, c, 4] +[4] +[1, b, c, 4] +[] +[1, b, c, 4] +[] +[1, b, c, 4] +[1, b, c, 4] +[1, b, c, 4] +[b] +[1, b, c, 4] +[b] +[1, b, c, 4] +## Splice +# Normal usage +[b, c, 4] +[1] +[1] +[b, c, 4] +[b, c] +[1, [object Object], 3, 4] +# Special cases +undefined [] -[[], [], []] -[] -[[], []] -[, , , , , , , , , ] -[, , , , , , , , , , , , , ] -[[], [], [], []] -[[], [], [], []] -[[], [], []] -[[], [], []] -[, , , , , , , , , , , , , , ] -[] -[] -[[]] -[[]] -[[[[]], []]] -[[[[]], []]] -[[], [], [], []] -[[], [], [], []] -[[], [], [], []] -[[], [], [], []] -[, , , , , , , , ] -[, , , , , , , , , , , , , ] -[[], [], [], [], [], [], []] -[[], [], [], []] -[[], [], []] -[[], [], [], [], [], [], []] -[[], [], [], []] -[, , , , , , , , , , , , , , ] -[] -[] -[] -[[], [], [], [], [], [], [], []] -[[], [], [], []] -[[], [[], []], [], [[], []], []] -[[], [[], []], []] -[[[], []], []] -[, , , , , , , ] -[, , , , , , , , , , , , , ] -[[], []] -[[], [], [], []] -[[], []] -[[], [], [], []] -[[], []] -[[], [], [], []] -[, , , , , , , , , , , , , , ] -[[], [], [], []] -[[], [], [], []] -[[], [], [], []] -[[], [], [], []] -[[], []] -[[], [], [], []] -[[]] -[[], [], [], []] -[] -[[], [], [], []] -[] -[[], [], [], []] -[[], [], [], []] -[[], [], [], []] -[[]] -[[], [], [], []] -[[]] -[[], [], [], []] -[, , , , , , , , ] -[, , , , , , , , , , , , , ] -[[], [], []] -[[]] -[[]] -[[], [], []] -[[], []] -[[], [], [], []] -[, , , , , , , , , , , , , , ] -[] -[] -[] -[[], []] -[, , , , , , ] -[, , , , , , , , , , , , , ] -[, , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , ] -[[], [], [], [], [], [], []] -[[], [], [], [], [], [], []] -[, , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , ] -[[], [], [], [], [], [], []] -[[], [], [], [], [], [], []] -[, , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , ] -[[], [], [], [], [], [], []] -[[], [], [], [], [], [], []] -[, , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , ] -[[], [], [], [], [], [], []] -[[], [], [], [], [], [], []] -[, , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , ] -[[], [], [], [], [], [], []] -[[], [], [], [], [], [], []] -[, , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , ] -[[], [], [], [], [], [], []] -[[], [], [], [], [], [], []] -[, , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , ] -[[], [], [], [], [], [], []] -[[], [], [], [], [], [], []] -[, , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , ] -[[], [], [], [], [], [], []] -[[], [], [], [], [], [], []] -[, , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , ] -[[], [], [], [], [], [], []] -[[], [], [], [], [], [], []] -[, , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , ] -[[], [], [], [], [], [], []] -[[], [], [], [], [], [], []] -[, , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , ] -[[], [], [], [], [], [], []] -[[], [], [], [], [], [], []] -[, , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , ] -[[], [], [], [], [], [], []] -[[], [], [], [], [], [], []] -[, , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , ] -[[], [], [], [], [], [], []] -[[], [], [], [], [], [], []] -[, , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , ] -[[], [], [], [], [], [], []] -[[], [], [], [], [], [], []] -[, , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , ] -[[], [], [], [], [], [], []] -[[], [], [], [], [], [], []] -[, , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , ] -[[], [], [], [], [], [], []] -[[], [], [], [], [], [], []] -[, , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , ] -[[], [], [], [], [], [], []] -[[], [], [], [], [], [], []] -[, , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , ] -[[], [], [], [], [], [], []] -[[], [], [], [], [], [], []] -[, , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , ] -[[], [], [], [], [], [], []] -[[], [], [], [], [], [], []] -[, , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , ] -[[], [], [], [], [], [], []] -[[], [], [], [], [], [], []] -[, , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , ] -[[], [], [], [], [], [], []] -[[], [], [], [], [], [], []] -[, , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , ] -[[], [], [], [], [], [], []] -[[], [], [], [], [], [], []] -[, , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , ] -[[], [], [], [], [], [], []] -[[], [], [], [], [], [], []] -[, , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , ] -[[], [], [], [], [], [], []] -[[], [], [], [], [], [], []] -[, , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , ] -[[], [], [], [], [], [], []] -[[], [], [], [], [], [], []] -[, , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , ] -[[], [], [], [], [], [], []] -[[], [], [], [], [], [], []] -[, , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , ] -[[], [], [], [], [], [], []] -[[], [], [], [], [], [], []] -[, , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , ] -[[], [], [], [], [], [], []] -[[], [], [], [], [], [], []] -[, , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , ] -[[], [], [], [], [], [], []] -[[], [], [], [], [], [], []] -[, , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , ] -[[], [], [], [], [], [], []] -[[], [], [], [], [], [], []] -[, , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , ] -[[], [], [], [], [], [], []] -[[], [], [], [], [], [], []] -[, , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , ] -[[], [], [], [], [], [], []] -[[], [], [], [], [], [], []] -[, , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , ] -[, , , , , , , , , [], [], [], [], [], [], []] -[, , , , , , , , , [], [], [], [], [], [], []] -[, , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , ] -[, , , , , , , , , [], [], [], [], [], [], []] -[, , , , , , , , , [], [], [], [], [], [], []] -[, , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , ] -[[], [], [], [], [], [], [], , , , , , , , , ] -[[], [], [], [], [], [], [], , , , , , , , , ] -[, , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , ] -[[], [], [], [], [], [], [], , , , , , , , , ] -[[], [], [], [], [], [], [], , , , , , , , , ] -[, , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , ] -[] -[, [], , [], [], [], , , , , [], , [], , , []] -[, , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , ] -[] -[, [], , [], [], [], , , , , [], , [], , , []] -[, , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , ] -[] -[, [], , [], [], [], , , , , [], , [], , , []] -[, , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , ] -[] -[, [], , [], [], [], , , , , [], , [], , , []] -[, , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , ] -[, , , , , , , , , [], [], [], [], [], [], []] -[, , , , , , , , , [], [], [], [], [], [], []] -[, , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , ] -[, , , , , , , , , [], [], [], [], [], [], []] -[, , , , , , , , , [], [], [], [], [], [], []] -[, , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , ] -[[], [], [], [], [], [], [], , , , , , , , , ] -[[], [], [], [], [], [], [], , , , , , , , , ] -[, , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , ] -[[], [], [], [], [], [], [], , , , , , , , , ] -[[], [], [], [], [], [], [], , , , , , , , , ] -[, , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , ] -[] -[, [], , [], [], [], , , , , [], , [], , , []] -[, , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , ] -[] -[, [], , [], [], [], , , , , [], , [], , , []] -[, , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , ] -[] -[, [], , [], [], [], , , , , [], , [], , , []] -[, , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , ] -[] -[, [], , [], [], [], , , , , [], , [], , , []] -[, , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , ] -[] -[[], [], [], [], [], [], []] -[, , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , ] -[] -[[], [], [], [], [], [], []] -[, , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , ] -[] -[[], [], [], [], [], [], []] -[, , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , ] -[] -[[], [], [], [], [], [], []] -[, , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , ] -[] -[[], [], [], [], [], [], []] -[, , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , ] -[] -[[], [], [], [], [], [], []] -[, , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , ] -[] -[[], [], [], [], [], [], []] -[, , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , ] -[] -[[], [], [], [], [], [], []] -[, , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , ] -[] -[[], [], [], [], [], [], []] -[, , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , ] -[] -[[], [], [], [], [], [], []] -[, , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , ] -[] -[[], [], [], [], [], [], []] -[, , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , ] -[] -[[], [], [], [], [], [], []] -[, , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , ] -[] -[[], [], [], [], [], [], []] -[, , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , ] -[] -[[], [], [], [], [], [], []] -[, , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , ] -[] -[[], [], [], [], [], [], []] -[, , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , ] -[] -[[], [], [], [], [], [], []] -[, , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , ] -[] -[[], [], [], [], [], [], []] -[, , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , ] -[] -[[], [], [], [], [], [], []] -[, , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , ] -[] -[[], [], [], [], [], [], []] -[, , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , ] -[] -[[], [], [], [], [], [], []] -[, , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , ] -[] -[[], [], [], [], [], [], []] -[, , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , ] -[] -[[], [], [], [], [], [], []] -[, , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , ] [] -[[], [], [], [], [], [], []] -[, , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , ] [] -[[], [], [], [], [], [], []] -[, , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , ] -[[], [], [], [], [], [], []] -[[], [], [], [], [], [], []] -[, , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , ] -[[], [], [], [], [], [], []] -[[], [], [], [], [], [], []] -[, , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , ] -[[], [], [], [], [], [], []] -[[], [], [], [], [], [], []] -[, , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , ] -[[], [], [], [], [], [], []] -[[], [], [], [], [], [], []] -[, , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , ] -[[], [], [], [], [], [], []] -[[], [], [], [], [], [], []] -[, , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , ] -[[], [], [], [], [], [], []] -[[], [], [], [], [], [], []] -[, , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , ] -[[], [], [], [], [], [], []] -[[], [], [], [], [], [], []] -[, , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , ] -[[], [], [], [], [], [], []] -[[], [], [], [], [], [], []] -[, , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , ] -[[], [[]], [[], []], [[], [], []], [[], [], [], []]] -[[], [[]], [[], []], [[], [], []], [[], [], [], []]] -[, , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , ] -[[], [[]], [[], []], [[], [], []], [[], [], [], []]] -[[], [[]], [[], []], [[], [], []], [[], [], [], []]] -[, , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , ] -[[[], [], [], []], [[], [], []], [[], []], [[]], []] -[[[], [], [], []], [[], [], []], [[], []], [[]], []] -[, , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , ] -[[[], [], [], []], [[], [], []], [[], []], [[]], []] -[[[], [], [], []], [[], [], []], [[], []], [[]], []] -[, , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , ] -[[], [[]], [[], []], [[], [], []], [[], [], [], []]] -[[], [[]], [[], []], [[], [], []], [[], [], [], []]] -[, , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , ] -[[], [[]], [[], []], [[], [], []], [[], [], [], []]] -[[], [[]], [[], []], [[], [], []], [[], [], [], []]] -[, , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , ] -[[[], [], [], []], [[], [], []], [[], []], [[]], []] -[[[], [], [], []], [[], [], []], [[], []], [[]], []] -[, , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , ] -[[[], [], [], []], [[], [], []], [[], []], [[]], []] -[[[], [], [], []], [[], [], []], [[], []], [[]], []] -[, , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , ] -[[], [], [], [], []] -[[[], [], []], [[], [], [], []], [], [[], []], [[]]] -[, , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , ] -[[], [], [], [], []] -[[[], [], []], [[], [], [], []], [], [[], []], [[]]] -[, , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , ] -[[], [], [], [], []] -[[[], [], []], [[], [], [], []], [], [[], []], [[]]] -[, , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , ] -[[], [], [], [], []] -[[[], [], []], [[], [], [], []], [], [[], []], [[]]] -[, , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , ] -[[], [], [], [], []] -[[[], [], []], [[], [], [], []], [], [[], []], [[]]] -[, , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , ] -[[], [], [], [], []] -[[[], [], []], [[], [], [], []], [], [[], []], [[]]] -[, , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , ] -[[], [], [], [], []] -[[[], [], []], [[], [], [], []], [], [[], []], [[]]] -[, , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , ] -[[], [], [], [], []] -[[[], [], []], [[], [], [], []], [], [[], []], [[]]] -[, , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , ] -[[], [[]], [[], []], [[], [], []], [[], [], [], []]] -[[], [[]], [[], []], [[], [], []], [[], [], [], []]] -[, , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , ] -[[], [[]], [[], []], [[], [], []], [[], [], [], []]] -[[], [[]], [[], []], [[], [], []], [[], [], [], []]] -[, , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , ] -[[[], [], [], []], [[], [], []], [[], []], [[]], []] -[[[], [], [], []], [[], [], []], [[], []], [[]], []] -[, , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , ] -[[[], [], [], []], [[], [], []], [[], []], [[]], []] -[[[], [], [], []], [[], [], []], [[], []], [[]], []] -[, , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , ] -[[], [[]], [[], []], [[], [], []], [[], [], [], []]] -[[], [[]], [[], []], [[], [], []], [[], [], [], []]] -[, , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , ] -[[], [[]], [[], []], [[], [], []], [[], [], [], []]] -[[], [[]], [[], []], [[], [], []], [[], [], [], []]] -[, , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , ] -[[[], [], [], []], [[], [], []], [[], []], [[]], []] -[[[], [], [], []], [[], [], []], [[], []], [[]], []] -[, , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , ] -[[[], [], [], []], [[], [], []], [[], []], [[]], []] -[[[], [], [], []], [[], [], []], [[], []], [[]], []] -[, , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , ] -[[], [], [], [], []] -[[[], [], []], [[], [], [], []], [], [[], []], [[]]] -[, , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , ] -[[], [], [], [], []] -[[[], [], []], [[], [], [], []], [], [[], []], [[]]] -[, , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , ] -[[], [], [], [], []] -[[[], [], []], [[], [], [], []], [], [[], []], [[]]] -[, , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , ] -[[], [], [], [], []] -[[[], [], []], [[], [], [], []], [], [[], []], [[]]] -[, , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , ] -[[], [], [], [], []] -[[[], [], []], [[], [], [], []], [], [[], []], [[]]] -[, , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , ] -[[], [], [], [], []] -[[[], [], []], [[], [], [], []], [], [[], []], [[]]] -[, , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , ] -[[], [], [], [], []] -[[[], [], []], [[], [], [], []], [], [[], []], [[]]] -[, , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , ] -[[], [], [], [], []] -[[[], [], []], [[], [], [], []], [], [[], []], [[]]] -[, , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , ] +[a, b] +## Sort +# Normal usage +sort 0 [a, B, c, v, 1, 9, 10] +[1, 10, 9, B, a, c, v] +[1, 10, 9, B, a, c, v] +sort 1 [a, B, c, v, 1, 9, 10] +[1, 10, 9, a, B, c, v] +[1, 10, 9, a, B, c, v] +sort 2 [a, B, c, v, 1, 9, 10] +[v, c, a, B, 9, 10, 1] +[v, c, a, B, 9, 10, 1] +sort 3 [a, B, c, v, 1, 9, 10] +[v, c, B, a, 9, 10, 1] +[v, c, B, a, 9, 10, 1] +sort 4 [a, B, c, v, 1, 9, 10] +[1, 10, 9, B, a, c, v] +[1, 10, 9, B, a, c, v] +sort 5 [a, B, c, v, 1, 9, 10] +[1, 10, 9, a, B, c, v] +[1, 10, 9, a, B, c, v] +sort 6 [a, B, c, v, 1, 9, 10] +[v, c, a, B, 9, 10, 1] +[v, c, a, B, 9, 10, 1] +sort 7 [a, B, c, v, 1, 9, 10] +[v, c, B, a, 9, 10, 1] +[v, c, B, a, 9, 10, 1] +sort 8 [a, B, c, v, 1, 9, 10] +[4, 6, 5, 1, 0, 2, 3] +[a, B, c, v, 1, 9, 10] +sort 9 [a, B, c, v, 1, 9, 10] +[4, 6, 5, 0, 1, 2, 3] +[a, B, c, v, 1, 9, 10] +sort 10 [a, B, c, v, 1, 9, 10] +[3, 2, 0, 1, 5, 6, 4] +[a, B, c, v, 1, 9, 10] +sort 11 [a, B, c, v, 1, 9, 10] +[3, 2, 1, 0, 5, 6, 4] +[a, B, c, v, 1, 9, 10] +sort 12 [a, B, c, v, 1, 9, 10] +[4, 6, 5, 1, 0, 2, 3] +[a, B, c, v, 1, 9, 10] +sort 13 [a, B, c, v, 1, 9, 10] +[4, 6, 5, 0, 1, 2, 3] +[a, B, c, v, 1, 9, 10] +sort 14 [a, B, c, v, 1, 9, 10] +[3, 2, 0, 1, 5, 6, 4] +[a, B, c, v, 1, 9, 10] +sort 15 [a, B, c, v, 1, 9, 10] +[3, 2, 1, 0, 5, 6, 4] +[a, B, c, v, 1, 9, 10] +sort 16 [a, B, c, v, 1, 9, 10] +[1, 9, 10, B, a, c, v] +[1, 9, 10, B, a, c, v] +sort 17 [a, B, c, v, 1, 9, 10] +[1, 9, 10, a, B, c, v] +[1, 9, 10, a, B, c, v] +sort 18 [a, B, c, v, 1, 9, 10] +[v, c, a, B, 10, 9, 1] +[v, c, a, B, 10, 9, 1] +sort 19 [a, B, c, v, 1, 9, 10] +[v, c, B, a, 10, 9, 1] +[v, c, B, a, 10, 9, 1] +sort 20 [a, B, c, v, 1, 9, 10] +[1, 9, 10, B, a, c, v] +[1, 9, 10, B, a, c, v] +sort 21 [a, B, c, v, 1, 9, 10] +[1, 9, 10, a, B, c, v] +[1, 9, 10, a, B, c, v] +sort 22 [a, B, c, v, 1, 9, 10] +[v, c, a, B, 10, 9, 1] +[v, c, a, B, 10, 9, 1] +sort 23 [a, B, c, v, 1, 9, 10] +[v, c, B, a, 10, 9, 1] +[v, c, B, a, 10, 9, 1] +sort 24 [a, B, c, v, 1, 9, 10] +[4, 5, 6, 1, 0, 2, 3] +[a, B, c, v, 1, 9, 10] +sort 25 [a, B, c, v, 1, 9, 10] +[4, 5, 6, 0, 1, 2, 3] +[a, B, c, v, 1, 9, 10] +sort 26 [a, B, c, v, 1, 9, 10] +[3, 2, 0, 1, 6, 5, 4] +[a, B, c, v, 1, 9, 10] +sort 27 [a, B, c, v, 1, 9, 10] +[3, 2, 1, 0, 6, 5, 4] +[a, B, c, v, 1, 9, 10] +sort 28 [a, B, c, v, 1, 9, 10] +[4, 5, 6, 1, 0, 2, 3] +[a, B, c, v, 1, 9, 10] +sort 29 [a, B, c, v, 1, 9, 10] +[4, 5, 6, 0, 1, 2, 3] +[a, B, c, v, 1, 9, 10] +sort 30 [a, B, c, v, 1, 9, 10] +[3, 2, 0, 1, 6, 5, 4] +[a, B, c, v, 1, 9, 10] +sort 31 [a, B, c, v, 1, 9, 10] +[3, 2, 1, 0, 6, 5, 4] +[a, B, c, v, 1, 9, 10] +sort 0 [, 1, , a, 10, B, , , , , c, , 9, , , v] +[, , , , , , , , , 1, 10, 9, B, a, c, v] +[, , , , , , , , , 1, 10, 9, B, a, c, v] +sort 1 [, 1, , a, 10, B, , , , , c, , 9, , , v] +[, , , , , , , , , 1, 10, 9, a, B, c, v] +[, , , , , , , , , 1, 10, 9, a, B, c, v] +sort 2 [, 1, , a, 10, B, , , , , c, , 9, , , v] +[v, c, a, B, 9, 10, 1, , , , , , , , , ] +[v, c, a, B, 9, 10, 1, , , , , , , , , ] +sort 3 [, 1, , a, 10, B, , , , , c, , 9, , , v] +[v, c, B, a, 9, 10, 1, , , , , , , , , ] +[v, c, B, a, 9, 10, 1, , , , , , , , , ] +sort 4 [, 1, , a, 10, B, , , , , c, , 9, , , v] +0 +[, 1, , a, 10, B, , , , , c, , 9, , , v] +sort 5 [, 1, , a, 10, B, , , , , c, , 9, , , v] +0 +[, 1, , a, 10, B, , , , , c, , 9, , , v] +sort 6 [, 1, , a, 10, B, , , , , c, , 9, , , v] +0 +[, 1, , a, 10, B, , , , , c, , 9, , , v] +sort 7 [, 1, , a, 10, B, , , , , c, , 9, , , v] +0 +[, 1, , a, 10, B, , , , , c, , 9, , , v] +sort 16 [, 1, , a, 10, B, , , , , c, , 9, , , v] +[, , , , , , , , , 1, 9, 10, B, a, c, v] +[, , , , , , , , , 1, 9, 10, B, a, c, v] +sort 17 [, 1, , a, 10, B, , , , , c, , 9, , , v] +[, , , , , , , , , 1, 9, 10, a, B, c, v] +[, , , , , , , , , 1, 9, 10, a, B, c, v] +sort 18 [, 1, , a, 10, B, , , , , c, , 9, , , v] +[v, c, a, B, 10, 9, 1, , , , , , , , , ] +[v, c, a, B, 10, 9, 1, , , , , , , , , ] +sort 19 [, 1, , a, 10, B, , , , , c, , 9, , , v] +[v, c, B, a, 10, 9, 1, , , , , , , , , ] +[v, c, B, a, 10, 9, 1, , , , , , , , , ] +sort 20 [, 1, , a, 10, B, , , , , c, , 9, , , v] +0 +[, 1, , a, 10, B, , , , , c, , 9, , , v] +sort 21 [, 1, , a, 10, B, , , , , c, , 9, , , v] +0 +[, 1, , a, 10, B, , , , , c, , 9, , , v] +sort 22 [, 1, , a, 10, B, , , , , c, , 9, , , v] +0 +[, 1, , a, 10, B, , , , , c, , 9, , , v] +sort 23 [, 1, , a, 10, B, , , , , c, , 9, , , v] +0 +[, 1, , a, 10, B, , , , , c, , 9, , , v] +sort 4 [a, B, c, 1, 9, 10, c] +0 +[a, B, c, 1, 9, 10, c] +sort 5 [a, B, c, 1, 9, 10, c] +0 +[a, B, c, 1, 9, 10, c] +sort 6 [a, B, c, 1, 9, 10, c] +0 +[a, B, c, 1, 9, 10, c] +sort 7 [a, B, c, 1, 9, 10, c] +0 +[a, B, c, 1, 9, 10, c] +sort 12 [a, B, c, 1, 9, 10, c] +0 +[a, B, c, 1, 9, 10, c] +sort 13 [a, B, c, 1, 9, 10, c] +0 +[a, B, c, 1, 9, 10, c] +sort 14 [a, B, c, 1, 9, 10, c] +0 +[a, B, c, 1, 9, 10, c] +sort 15 [a, B, c, 1, 9, 10, c] +0 +[a, B, c, 1, 9, 10, c] +sort 20 [a, B, c, 1, 9, 10, c] +0 +[a, B, c, 1, 9, 10, c] +sort 21 [a, B, c, 1, 9, 10, c] +0 +[a, B, c, 1, 9, 10, c] +sort 22 [a, B, c, 1, 9, 10, c] +0 +[a, B, c, 1, 9, 10, c] +sort 23 [a, B, c, 1, 9, 10, c] +0 +[a, B, c, 1, 9, 10, c] +sort 28 [a, B, c, 1, 9, 10, c] +0 +[a, B, c, 1, 9, 10, c] +sort 29 [a, B, c, 1, 9, 10, c] +0 +[a, B, c, 1, 9, 10, c] +sort 30 [a, B, c, 1, 9, 10, c] +0 +[a, B, c, 1, 9, 10, c] +sort 31 [a, B, c, 1, 9, 10, c] +0 +[a, B, c, 1, 9, 10, c] +sort 5 [a, B, c, 1, 9, 10, C] +0 +[a, B, c, 1, 9, 10, C] +sort 7 [a, B, c, 1, 9, 10, C] +0 +[a, B, c, 1, 9, 10, C] +sort 13 [a, B, c, 1, 9, 10, C] +0 +[a, B, c, 1, 9, 10, C] +sort 15 [a, B, c, 1, 9, 10, C] +0 +[a, B, c, 1, 9, 10, C] +sort 21 [a, B, c, 1, 9, 10, C] +0 +[a, B, c, 1, 9, 10, C] +sort 23 [a, B, c, 1, 9, 10, C] +0 +[a, B, c, 1, 9, 10, C] +sort 29 [a, B, c, 1, 9, 10, C] +0 +[a, B, c, 1, 9, 10, C] +sort 31 [a, B, c, 1, 9, 10, C] +0 +[a, B, c, 1, 9, 10, C] +sort 0 [a, B, c, 1, 9, 10, C] +[1, 10, 9, B, C, a, c] +[1, 10, 9, B, C, a, c] +sort 2 [a, B, c, 1, 9, 10, C] +[c, a, C, B, 9, 10, 1] +[c, a, C, B, 9, 10, 1] +sort 8 [a, B, c, 1, 9, 10, C] +[3, 5, 4, 1, 6, 0, 2] +[a, B, c, 1, 9, 10, C] +sort 10 [a, B, c, 1, 9, 10, C] +[2, 0, 6, 1, 4, 5, 3] +[a, B, c, 1, 9, 10, C] +sort 16 [a, B, c, 1, 9, 10, C] +[1, 9, 10, B, C, a, c] +[1, 9, 10, B, C, a, c] +sort 18 [a, B, c, 1, 9, 10, C] +[c, a, C, B, 10, 9, 1] +[c, a, C, B, 10, 9, 1] +sort 24 [a, B, c, 1, 9, 10, C] +[3, 4, 5, 1, 6, 0, 2] +[a, B, c, 1, 9, 10, C] +sort 26 [a, B, c, 1, 9, 10, C] +[2, 0, 6, 1, 5, 4, 3] +[a, B, c, 1, 9, 10, C] +sort 0 [[1, 2, 3], [1, 2, 3, 4], [], [1, 2], [1]] +[[], [1], [1, 2], [1, 2, 3], [1, 2, 3, 4]] +[[], [1], [1, 2], [1, 2, 3], [1, 2, 3, 4]] +sort 1 [[1, 2, 3], [1, 2, 3, 4], [], [1, 2], [1]] +[[], [1], [1, 2], [1, 2, 3], [1, 2, 3, 4]] +[[], [1], [1, 2], [1, 2, 3], [1, 2, 3, 4]] +sort 2 [[1, 2, 3], [1, 2, 3, 4], [], [1, 2], [1]] +[[1, 2, 3, 4], [1, 2, 3], [1, 2], [1], []] +[[1, 2, 3, 4], [1, 2, 3], [1, 2], [1], []] +sort 3 [[1, 2, 3], [1, 2, 3, 4], [], [1, 2], [1]] +[[1, 2, 3, 4], [1, 2, 3], [1, 2], [1], []] +[[1, 2, 3, 4], [1, 2, 3], [1, 2], [1], []] +sort 4 [[1, 2, 3], [1, 2, 3, 4], [], [1, 2], [1]] +[[], [1], [1, 2], [1, 2, 3], [1, 2, 3, 4]] +[[], [1], [1, 2], [1, 2, 3], [1, 2, 3, 4]] +sort 5 [[1, 2, 3], [1, 2, 3, 4], [], [1, 2], [1]] +[[], [1], [1, 2], [1, 2, 3], [1, 2, 3, 4]] +[[], [1], [1, 2], [1, 2, 3], [1, 2, 3, 4]] +sort 6 [[1, 2, 3], [1, 2, 3, 4], [], [1, 2], [1]] +[[1, 2, 3, 4], [1, 2, 3], [1, 2], [1], []] +[[1, 2, 3, 4], [1, 2, 3], [1, 2], [1], []] +sort 7 [[1, 2, 3], [1, 2, 3, 4], [], [1, 2], [1]] +[[1, 2, 3, 4], [1, 2, 3], [1, 2], [1], []] +[[1, 2, 3, 4], [1, 2, 3], [1, 2], [1], []] +sort 8 [[1, 2, 3], [1, 2, 3, 4], [], [1, 2], [1]] +[2, 4, 3, 0, 1] +[[1, 2, 3], [1, 2, 3, 4], [], [1, 2], [1]] +sort 9 [[1, 2, 3], [1, 2, 3, 4], [], [1, 2], [1]] +[2, 4, 3, 0, 1] +[[1, 2, 3], [1, 2, 3, 4], [], [1, 2], [1]] +sort 10 [[1, 2, 3], [1, 2, 3, 4], [], [1, 2], [1]] +[1, 0, 3, 4, 2] +[[1, 2, 3], [1, 2, 3, 4], [], [1, 2], [1]] +sort 11 [[1, 2, 3], [1, 2, 3, 4], [], [1, 2], [1]] +[1, 0, 3, 4, 2] +[[1, 2, 3], [1, 2, 3, 4], [], [1, 2], [1]] +sort 12 [[1, 2, 3], [1, 2, 3, 4], [], [1, 2], [1]] +[2, 4, 3, 0, 1] +[[1, 2, 3], [1, 2, 3, 4], [], [1, 2], [1]] +sort 13 [[1, 2, 3], [1, 2, 3, 4], [], [1, 2], [1]] +[2, 4, 3, 0, 1] +[[1, 2, 3], [1, 2, 3, 4], [], [1, 2], [1]] +sort 14 [[1, 2, 3], [1, 2, 3, 4], [], [1, 2], [1]] +[1, 0, 3, 4, 2] +[[1, 2, 3], [1, 2, 3, 4], [], [1, 2], [1]] +sort 15 [[1, 2, 3], [1, 2, 3, 4], [], [1, 2], [1]] +[1, 0, 3, 4, 2] +[[1, 2, 3], [1, 2, 3, 4], [], [1, 2], [1]] +sort 16 [[1, 2, 3], [1, 2, 3, 4], [], [1, 2], [1]] +[[], [1], [1, 2], [1, 2, 3], [1, 2, 3, 4]] +[[], [1], [1, 2], [1, 2, 3], [1, 2, 3, 4]] +sort 17 [[1, 2, 3], [1, 2, 3, 4], [], [1, 2], [1]] +[[], [1], [1, 2], [1, 2, 3], [1, 2, 3, 4]] +[[], [1], [1, 2], [1, 2, 3], [1, 2, 3, 4]] +sort 18 [[1, 2, 3], [1, 2, 3, 4], [], [1, 2], [1]] +[[1, 2, 3, 4], [1, 2, 3], [1, 2], [1], []] +[[1, 2, 3, 4], [1, 2, 3], [1, 2], [1], []] +sort 19 [[1, 2, 3], [1, 2, 3, 4], [], [1, 2], [1]] +[[1, 2, 3, 4], [1, 2, 3], [1, 2], [1], []] +[[1, 2, 3, 4], [1, 2, 3], [1, 2], [1], []] +sort 20 [[1, 2, 3], [1, 2, 3, 4], [], [1, 2], [1]] +[[], [1], [1, 2], [1, 2, 3], [1, 2, 3, 4]] +[[], [1], [1, 2], [1, 2, 3], [1, 2, 3, 4]] +sort 21 [[1, 2, 3], [1, 2, 3, 4], [], [1, 2], [1]] +[[], [1], [1, 2], [1, 2, 3], [1, 2, 3, 4]] +[[], [1], [1, 2], [1, 2, 3], [1, 2, 3, 4]] +sort 22 [[1, 2, 3], [1, 2, 3, 4], [], [1, 2], [1]] +[[1, 2, 3, 4], [1, 2, 3], [1, 2], [1], []] +[[1, 2, 3, 4], [1, 2, 3], [1, 2], [1], []] +sort 23 [[1, 2, 3], [1, 2, 3, 4], [], [1, 2], [1]] +[[1, 2, 3, 4], [1, 2, 3], [1, 2], [1], []] +[[1, 2, 3, 4], [1, 2, 3], [1, 2], [1], []] +sort 24 [[1, 2, 3], [1, 2, 3, 4], [], [1, 2], [1]] +[2, 4, 3, 0, 1] +[[1, 2, 3], [1, 2, 3, 4], [], [1, 2], [1]] +sort 25 [[1, 2, 3], [1, 2, 3, 4], [], [1, 2], [1]] +[2, 4, 3, 0, 1] +[[1, 2, 3], [1, 2, 3, 4], [], [1, 2], [1]] +sort 26 [[1, 2, 3], [1, 2, 3, 4], [], [1, 2], [1]] +[1, 0, 3, 4, 2] +[[1, 2, 3], [1, 2, 3, 4], [], [1, 2], [1]] +sort 27 [[1, 2, 3], [1, 2, 3, 4], [], [1, 2], [1]] +[1, 0, 3, 4, 2] +[[1, 2, 3], [1, 2, 3, 4], [], [1, 2], [1]] +sort 28 [[1, 2, 3], [1, 2, 3, 4], [], [1, 2], [1]] +[2, 4, 3, 0, 1] +[[1, 2, 3], [1, 2, 3, 4], [], [1, 2], [1]] +sort 29 [[1, 2, 3], [1, 2, 3, 4], [], [1, 2], [1]] +[2, 4, 3, 0, 1] +[[1, 2, 3], [1, 2, 3, 4], [], [1, 2], [1]] +sort 30 [[1, 2, 3], [1, 2, 3, 4], [], [1, 2], [1]] +[1, 0, 3, 4, 2] +[[1, 2, 3], [1, 2, 3, 4], [], [1, 2], [1]] +sort 31 [[1, 2, 3], [1, 2, 3, 4], [], [1, 2], [1]] +[1, 0, 3, 4, 2] +[[1, 2, 3], [1, 2, 3, 4], [], [1, 2], [1]] +undefined +[, , , , , , , a, b, c] +[, a, b] +[, a, b] +0 +undefined +## Fake Array (Object with Array's methods) [type Function] 5 5: a:b:c:x:z @@ -576,16 +583,18 @@ z 6: z:y:a:b:c:x z 6: y:a:b:c:x:x -x,x,c,b,a,y -6: x:x:c:b:a:y -x:x:c:b:a:y:a:x,x,c,b,a,y -6: x:x:c:b:a:y -x,c -6: x:x:c:b:a:y -c,b,a -5: x:x:i:j:y -i,j,x,x,y -5: i:j:x:x:y +y +1: y +x,c,b,a,y +5: x:c:b:a:y +x:c:b:a:y:a:x,c,b,a,y +5: x:c:b:a:y +c,b +5: x:c:b:a:y +b,a,y +4: x:c:i:j +c,i,j,x +4: c:i:j:x [object Object] 4, 3 -[, , , , , , ] +## Done diff --git a/test/trace/array2-6.swf b/test/trace/array2-6.swf index b9ab904..7cd43c8 100644 Binary files a/test/trace/array2-6.swf and b/test/trace/array2-6.swf differ diff --git a/test/trace/array2-6.swf.trace b/test/trace/array2-6.swf.trace index fc370f7..6d27db8 100644 --- a/test/trace/array2-6.swf.trace +++ b/test/trace/array2-6.swf.trace @@ -221,6 +221,7 @@ b [b, c] [1, [object Object], 3, 4] # Special cases +undefined [] [] [] @@ -563,6 +564,12 @@ sort customfunc 30 [[1, 2, 3], [1, 2, 3, 4], [], [1, 2], [1]] sort customfunc 31 [[1, 2, 3], [1, 2, 3, 4], [], [1, 2], [1]] [1, 0, 3, 4, 2] [[1, 2, 3], [1, 2, 3, 4], [], [1, 2], [1]] +undefined +[, , , , , , , a, b, c] +[, a, b] +[, a, b] +0 +undefined ## Fake Array (Object with Array's methods) [type Function] 5 @@ -576,16 +583,18 @@ z 6: z:y:a:b:c:x z 6: y:a:b:c:x:x -x,x,c,b,a,y -6: x:x:c:b:a:y -x:x:c:b:a:y:a:x,x,c,b,a,y -6: x:x:c:b:a:y -x,c -6: x:x:c:b:a:y -c,b,a -5: x:x:i:j:y -i,j,x,x,y -5: i:j:x:x:y +y +1: y +x,c,b,a,y +5: x:c:b:a:y +x:c:b:a:y:a:x,c,b,a,y +5: x:c:b:a:y +c,b +5: x:c:b:a:y +b,a,y +4: x:c:i:j +c,i,j,x +4: c:i:j:x [object Object] 4, 3 ## Done diff --git a/test/trace/array2-7.swf b/test/trace/array2-7.swf index 15090b1..b188681 100644 Binary files a/test/trace/array2-7.swf and b/test/trace/array2-7.swf differ diff --git a/test/trace/array2-7.swf.trace b/test/trace/array2-7.swf.trace index 1ebe055..1ea3e0b 100644 --- a/test/trace/array2-7.swf.trace +++ b/test/trace/array2-7.swf.trace @@ -221,6 +221,7 @@ b [b, c] [1, [object Object], 3, 4] # Special cases +undefined [] [] [] @@ -563,6 +564,12 @@ sort customfunc 30 [[1, 2, 3], [1, 2, 3, 4], [], [1, 2], [1]] sort customfunc 31 [[1, 2, 3], [1, 2, 3, 4], [], [1, 2], [1]] [1, 0, 3, 4, 2] [[1, 2, 3], [1, 2, 3, 4], [], [1, 2], [1]] +undefined +[a, b, c, undefined, undefined, undefined, undefined, undefined, undefined, undefined] +[a, b, undefined] +[a, b, undefined] +0 +undefined ## Fake Array (Object with Array's methods) [type Function] 5 @@ -576,16 +583,18 @@ z 6: z:y:a:b:c:x z 6: y:a:b:c:x:x -x,x,c,b,a,y -6: x:x:c:b:a:y -x:x:c:b:a:y:a:x,x,c,b,a,y -6: x:x:c:b:a:y -x,c -6: x:x:c:b:a:y -c,b,a -5: x:x:i:j:y -i,j,x,x,y -5: i:j:x:x:y +y +1: y +x,c,b,a,y +5: x:c:b:a:y +x:c:b:a:y:a:x,c,b,a,y +5: x:c:b:a:y +c,b +5: x:c:b:a:y +b,a,y +4: x:c:i:j +c,i,j,x +4: c:i:j:x [object Object] 4, 3 ## Done diff --git a/test/trace/array2-8.swf b/test/trace/array2-8.swf index 4b6910f..f2b37e0 100644 Binary files a/test/trace/array2-8.swf and b/test/trace/array2-8.swf differ diff --git a/test/trace/array2-8.swf.trace b/test/trace/array2-8.swf.trace index 1ebe055..1ea3e0b 100644 --- a/test/trace/array2-8.swf.trace +++ b/test/trace/array2-8.swf.trace @@ -221,6 +221,7 @@ b [b, c] [1, [object Object], 3, 4] # Special cases +undefined [] [] [] @@ -563,6 +564,12 @@ sort customfunc 30 [[1, 2, 3], [1, 2, 3, 4], [], [1, 2], [1]] sort customfunc 31 [[1, 2, 3], [1, 2, 3, 4], [], [1, 2], [1]] [1, 0, 3, 4, 2] [[1, 2, 3], [1, 2, 3, 4], [], [1, 2], [1]] +undefined +[a, b, c, undefined, undefined, undefined, undefined, undefined, undefined, undefined] +[a, b, undefined] +[a, b, undefined] +0 +undefined ## Fake Array (Object with Array's methods) [type Function] 5 @@ -576,16 +583,18 @@ z 6: z:y:a:b:c:x z 6: y:a:b:c:x:x -x,x,c,b,a,y -6: x:x:c:b:a:y -x:x:c:b:a:y:a:x,x,c,b,a,y -6: x:x:c:b:a:y -x,c -6: x:x:c:b:a:y -c,b,a -5: x:x:i:j:y -i,j,x,x,y -5: i:j:x:x:y +y +1: y +x,c,b,a,y +5: x:c:b:a:y +x:c:b:a:y:a:x,c,b,a,y +5: x:c:b:a:y +c,b +5: x:c:b:a:y +b,a,y +4: x:c:i:j +c,i,j,x +4: c:i:j:x [object Object] 4, 3 ## Done diff --git a/test/trace/array2.as b/test/trace/array2.as index 4847af0..946b10e 100644 --- a/test/trace/array2.as +++ b/test/trace/array2.as @@ -8,7 +8,7 @@ function pretty (arr, lvl) { var i; var str = "["; for (i = 0; i < arr.length; i++) { - if (arr[i] != null && arr[i].constructor == Array) { + if (arr[i] instanceOf Array) { str = str + pretty (arr[i], lvl + 1); } else { str = str + arr[i]; @@ -21,7 +21,7 @@ function pretty (arr, lvl) { } function mytrace (arr) { - if (arr != null && arr.constructor == Array) { + if (arr instanceOf Array) { trace (pretty (arr, 0)); } else { trace (arr); @@ -407,6 +407,8 @@ mytrace (a); mytrace ("# Special cases"); +a = new Array (1, "b", "c", 4); // no arguments +mytrace (a.splice ()); a = new Array (); // empty array mytrace (a.splice (0)); mytrace (a); @@ -471,6 +473,45 @@ sortall (a, null, 0, Array.UNIQUESORT | Array.CASEINSENSITIVE); a = new Array ([1,2,3], [1,2,3,4], [], [1,2], [1]); sortall (a, compare_array_length, 0, 0); +// indexed array with undefined values +a = new Array (); +a[0] = "a"; +a[2] = "b"; +a[3] = undefined; +a[4] = "c"; +a.length = 10; +var ret = c.sort (Array.RETURNINDEXEDARRAY); +#if __SWF_VERSION__ <= 6 +mytrace (ret.slice (-3)); +#else +mytrace (ret.slice (0, 3)); +#endif + +// array with undefined values +a = new Array (); +a[0] = "a"; +a[2] = "b"; +a[3] = undefined; +a[4] = "c"; +a.length = 10; +mytrace (a.sort ()); + +// unique sort with one undefined values +a = new Array ("a", "b"); +a.length = 3; +mytrace (a.sort (Array.UNIQUESORT)); + +a = new Array ("a", undefined, "b"); +mytrace (a.sort (Array.UNIQUESORT)); + +a = new Array ("a", undefined, "b"); +a.length = 4; +mytrace (a.sort (Array.UNIQUESORT)); + +// sort with non-integer and non-object argument +a = new Array ("b", "a", "c"); +mytrace (a.sort ("moi")); + mytrace ("## Fake Array (Object with Array's methods)"); @@ -502,6 +543,11 @@ fake.length++; trace (fake.length + ": " + fake.join (":")); trace (fake.shift ()); trace (fake.length + ": " + fake.join (":")); +// shift on the last element +fake.length = 1; +trace (fake.shift ()); +trace (fake.length + ": " + fake.join (":")); +fake.length = 5; trace (fake.reverse ()); trace (fake.length + ": " + fake.join (":")); commit e7ce8dac54b5ba1e7966bca46f74a27ff59225d2 Author: Pekka Lampila <pekka.lampila at iki.fi> Date: Thu Dec 20 12:07:45 2007 +0200 Expand array-no-object test diff --git a/test/trace/array-no-object-5.swf b/test/trace/array-no-object-5.swf index a711a5e..e767b6a 100644 Binary files a/test/trace/array-no-object-5.swf and b/test/trace/array-no-object-5.swf differ diff --git a/test/trace/array-no-object-5.swf.trace b/test/trace/array-no-object-5.swf.trace index 8542eaa..d8ec7b4 100644 --- a/test/trace/array-no-object-5.swf.trace +++ b/test/trace/array-no-object-5.swf.trace @@ -2,7 +2,13 @@ Before deleting Array 1,2 undefined 2 +1,2 +undefined +2 After deleting Array [type Object] undefined 2 +undefined +undefined +undefined diff --git a/test/trace/array-no-object-6.swf b/test/trace/array-no-object-6.swf index 1abf021..ddcaba0 100644 Binary files a/test/trace/array-no-object-6.swf and b/test/trace/array-no-object-6.swf differ diff --git a/test/trace/array-no-object-6.swf.trace b/test/trace/array-no-object-6.swf.trace index 8542eaa..3dbb110 100644 --- a/test/trace/array-no-object-6.swf.trace +++ b/test/trace/array-no-object-6.swf.trace @@ -2,7 +2,13 @@ Before deleting Array 1,2 undefined 2 +1,2 +[type Function] +2 After deleting Array [type Object] undefined 2 +undefined +undefined +undefined diff --git a/test/trace/array-no-object-7.swf b/test/trace/array-no-object-7.swf index e4b0920..408d64e 100644 Binary files a/test/trace/array-no-object-7.swf and b/test/trace/array-no-object-7.swf differ diff --git a/test/trace/array-no-object-7.swf.trace b/test/trace/array-no-object-7.swf.trace index 8542eaa..3dbb110 100644 --- a/test/trace/array-no-object-7.swf.trace +++ b/test/trace/array-no-object-7.swf.trace @@ -2,7 +2,13 @@ Before deleting Array 1,2 undefined 2 +1,2 +[type Function] +2 After deleting Array [type Object] undefined 2 +undefined +undefined +undefined diff --git a/test/trace/array-no-object-8.swf b/test/trace/array-no-object-8.swf index 34ee36c..3360932 100644 Binary files a/test/trace/array-no-object-8.swf and b/test/trace/array-no-object-8.swf differ diff --git a/test/trace/array-no-object-8.swf.trace b/test/trace/array-no-object-8.swf.trace index 8542eaa..3dbb110 100644 --- a/test/trace/array-no-object-8.swf.trace +++ b/test/trace/array-no-object-8.swf.trace @@ -2,7 +2,13 @@ Before deleting Array 1,2 undefined 2 +1,2 +[type Function] +2 After deleting Array [type Object] undefined 2 +undefined +undefined +undefined diff --git a/test/trace/array-no-object.as b/test/trace/array-no-object.as index 33f3dbb..9864ecc 100644 --- a/test/trace/array-no-object.as +++ b/test/trace/array-no-object.as @@ -1,17 +1,29 @@ // makeswf -v 7 -r 1 -o array-no-object-7.swf array-no-object.as trace ("Before deleting Array"); + var a = [1, 2]; trace (a); trace (a.__constructor__); trace (a.length); -delete Array; - -trace ("After deleting Array"); -var b = [1, 2]; +var b = new Array (1, 2); trace (b); trace (b.__constructor__); trace (b.length); +delete Array; + +trace ("After deleting Array"); + +var c = [1, 2]; +trace (c); +trace (c.__constructor__); +trace (c.length); + +var d = new Array (1, 2); +trace (d); +trace (d.__constructor__); +trace (d.length); + loadMovie ("FSCommand:quit", ""); commit b10e4a3c1c7147664c2cec1d78eec188428864bf Author: Pekka Lampila <pekka.lampila at iki.fi> Date: Thu Dec 20 11:58:22 2007 +0200 Fix an error in UNIQUESORT when there is exactly one undefined value diff --git a/libswfdec/swfdec_as_array.c b/libswfdec/swfdec_as_array.c index 2c89241..ee2c0a1 100644 --- a/libswfdec/swfdec_as_array.c +++ b/libswfdec/swfdec_as_array.c @@ -1127,8 +1127,6 @@ swfdec_as_array_foreach_sort_compare_undefined (SwfdecAsObject *object, if (SWFDEC_AS_VALUE_IS_UNDEFINED (value)) return TRUE; - fdata->defined_values++; - // when testing for uniquesort the custom compare function is NOT used if (swfdec_as_array_sort_compare (object->context, value, &fdata->undefined, fdata->options, NULL, fdata->fields) == 0) @@ -1239,7 +1237,7 @@ swfdec_as_array_do_sort (SwfdecAsObject *object, gint32 options, fdata.defined_values < fdata.length) { // uniquesort used, and we have exactly one undefined value test if - // anything equeals to that + // anything equals to that if (!swfdec_as_object_foreach (object, swfdec_as_array_foreach_sort_compare_undefined, &fdata)) { commit e1250ed18cda1b59c1582d13e8d4af07a4272f5d Author: Pekka Lampila <pekka.lampila at iki.fi> Date: Thu Dec 20 11:45:48 2007 +0200 Minor cleanups to the array code diff --git a/libswfdec/swfdec_as_array.c b/libswfdec/swfdec_as_array.c index 151b159..2c89241 100644 --- a/libswfdec/swfdec_as_array.c +++ b/libswfdec/swfdec_as_array.c @@ -181,8 +181,8 @@ swfdec_as_array_remove_range (SwfdecAsArray *array, gint32 start_index, // to avoid foreach loop, use special case when removing just one variable if (num == 1) { - const char *var = swfdec_as_double_to_string (object->context, start_index); - swfdec_as_object_delete_variable (object, var); + swfdec_as_object_delete_variable (object, + swfdec_as_double_to_string (object->context, start_index)); } else { ForeachRemoveRangeData fdata = { start_index, num }; swfdec_as_object_foreach_remove (object, @@ -482,13 +482,15 @@ swfdec_as_array_append_array_range (SwfdecAsArray *array_to, fdata.start_index = start_index; fdata.num = num; - swfdec_as_array_set_length_object (fdata.object_to, fdata.offset + fdata.num); + swfdec_as_array_set_length_object (fdata.object_to, + fdata.offset + fdata.num); swfdec_as_object_foreach (object_from, swfdec_as_array_foreach_append_array_range, &fdata); } static void -swfdec_as_array_append_array (SwfdecAsArray *array_to, SwfdecAsObject *object_from) +swfdec_as_array_append_array (SwfdecAsArray *array_to, + SwfdecAsObject *object_from) { swfdec_as_array_append_array_range (array_to, object_from, 0, swfdec_as_array_length (object_from)); @@ -652,8 +654,8 @@ swfdec_as_array_do_push (SwfdecAsContext *cx, SwfdecAsObject *object, SWFDEC_AS_NATIVE (252, 2, swfdec_as_array_do_pop) void -swfdec_as_array_do_pop (SwfdecAsContext *cx, SwfdecAsObject *object, guint argc, - SwfdecAsValue *argv, SwfdecAsValue *ret) +swfdec_as_array_do_pop (SwfdecAsContext *cx, SwfdecAsObject *object, + guint argc, SwfdecAsValue *argv, SwfdecAsValue *ret) { gint32 length; const char *var; @@ -772,8 +774,8 @@ swfdec_as_array_reverse (SwfdecAsContext *cx, SwfdecAsObject *object, SWFDEC_AS_NATIVE (252, 3, swfdec_as_array_concat) void -swfdec_as_array_concat (SwfdecAsContext *cx, SwfdecAsObject *object, guint argc, - SwfdecAsValue *argv, SwfdecAsValue *ret) +swfdec_as_array_concat (SwfdecAsContext *cx, SwfdecAsObject *object, + guint argc, SwfdecAsValue *argv, SwfdecAsValue *ret) { guint j; SwfdecAsObject *object_new; @@ -814,7 +816,6 @@ swfdec_as_array_slice (SwfdecAsContext *cx, SwfdecAsObject *object, guint argc, SwfdecAsValue *argv, SwfdecAsValue *ret) { gint32 length, start_index, num; - SwfdecAsObject *object_new; SwfdecAsArray *array_new; if (object == NULL) @@ -841,23 +842,21 @@ swfdec_as_array_slice (SwfdecAsContext *cx, SwfdecAsObject *object, guint argc, num = length - start_index; } - object_new = swfdec_as_array_new (cx); - if (object_new == NULL) + array_new = SWFDEC_AS_ARRAY (swfdec_as_array_new (cx)); + if (array_new == NULL) return; - array_new = SWFDEC_AS_ARRAY (object_new); swfdec_as_array_append_array_range (array_new, object, start_index, num); - SWFDEC_AS_VALUE_SET_OBJECT (ret, object_new); + SWFDEC_AS_VALUE_SET_OBJECT (ret, SWFDEC_AS_OBJECT (array_new)); } SWFDEC_AS_NATIVE (252, 8, swfdec_as_array_splice) void -swfdec_as_array_splice (SwfdecAsContext *cx, SwfdecAsObject *object, guint argc, - SwfdecAsValue *argv, SwfdecAsValue *ret) +swfdec_as_array_splice (SwfdecAsContext *cx, SwfdecAsObject *object, + guint argc, SwfdecAsValue *argv, SwfdecAsValue *ret) { gint32 length, start_index, num_remove, num_add; - SwfdecAsObject *object_new; SwfdecAsArray *array_new; if (object == NULL || argc == 0) @@ -879,10 +878,9 @@ swfdec_as_array_splice (SwfdecAsContext *cx, SwfdecAsObject *object, guint argc, num_add = (argc > 2 ? argc - 2 : 0); - object_new = swfdec_as_array_new (cx); - if (object_new == NULL) + array_new = SWFDEC_AS_ARRAY (swfdec_as_array_new (cx)); + if (array_new == NULL) return; - array_new = SWFDEC_AS_ARRAY (object_new); swfdec_as_array_append_array_range (array_new, object, start_index, num_remove); @@ -893,7 +891,7 @@ swfdec_as_array_splice (SwfdecAsContext *cx, SwfdecAsObject *object, guint argc, if (argc > 2) swfdec_as_array_set_range (object, start_index, argc - 2, argv + 2); - SWFDEC_AS_VALUE_SET_OBJECT (ret, object_new); + SWFDEC_AS_VALUE_SET_OBJECT (ret, SWFDEC_AS_OBJECT (array_new)); } // Sorting @@ -1045,8 +1043,6 @@ swfdec_as_array_foreach_sort_rename (SwfdecAsObject *object, } g_assert_not_reached (); - - return variable; } // fills fdata->object_new array using indexes based on the fdata->order @@ -1083,8 +1079,6 @@ swfdec_as_array_foreach_sort_indexedarray (SwfdecAsObject *object, } g_assert_not_reached (); - - return TRUE; } // sets undefined values in the fdata->object_new array to indexes of undefined @@ -1201,8 +1195,6 @@ swfdec_as_array_foreach_sort_populate (SwfdecAsObject *object, } g_assert_not_reached (); - - return TRUE; } static void @@ -1261,9 +1253,9 @@ swfdec_as_array_do_sort (SwfdecAsObject *object, gint32 options, // make a new array and fill it with numbers based on the order fdata.object_new = swfdec_as_array_new (object->context); if (fdata.object_new != NULL) { - swfdec_as_object_foreach (object, swfdec_as_array_foreach_sort_indexedarray, - &fdata); - // we only have the elements that have been set so far, fill in the blanks + swfdec_as_object_foreach (object, + swfdec_as_array_foreach_sort_indexedarray, &fdata); + // we have values that have been set now, fill in the undefined values swfdec_as_array_sort_set_undefined_indexedarray (object, &fdata); SWFDEC_AS_VALUE_SET_OBJECT (ret, fdata.object_new); } @@ -1313,8 +1305,8 @@ swfdec_as_array_sort (SwfdecAsContext *cx, SwfdecAsObject *object, guint argc, SWFDEC_AS_NATIVE (252, 12, swfdec_as_array_sortOn) void -swfdec_as_array_sortOn (SwfdecAsContext *cx, SwfdecAsObject *object, guint argc, - SwfdecAsValue *argv, SwfdecAsValue *ret) +swfdec_as_array_sortOn (SwfdecAsContext *cx, SwfdecAsObject *object, + guint argc, SwfdecAsValue *argv, SwfdecAsValue *ret) { const char **fields; gint32 options; @@ -1345,7 +1337,8 @@ swfdec_as_array_sortOn (SwfdecAsContext *cx, SwfdecAsObject *object, guint argc, swfdec_as_array_get_value (SWFDEC_AS_ARRAY (array), i, &val); if (SWFDEC_AS_VALUE_IS_OBJECT (&val) && SWFDEC_IS_AS_STRING (SWFDEC_AS_VALUE_GET_OBJECT (&val))) { - fields[i] = SWFDEC_AS_STRING (SWFDEC_AS_VALUE_GET_OBJECT (&val))->string; + fields[i] + SWFDEC_AS_STRING (SWFDEC_AS_VALUE_GET_OBJECT (&val))->string; } else { fields[i] = swfdec_as_value_to_string (cx, &val); } @@ -1385,7 +1378,8 @@ swfdec_as_array_construct (SwfdecAsContext *cx, SwfdecAsObject *object, swfdec_as_object_add (object, cx, sizeof (SwfdecAsArray)); swfdec_as_object_get_variable (cx->global, SWFDEC_AS_STR_Array, &val); if (SWFDEC_AS_VALUE_IS_OBJECT (&val)) { - swfdec_as_object_set_constructor (object, SWFDEC_AS_VALUE_GET_OBJECT (&val)); + swfdec_as_object_set_constructor (object, + SWFDEC_AS_VALUE_GET_OBJECT (&val)); } else { SWFDEC_INFO ("\"Array\" is not an object"); } commit c87b9a185c21a265ee1736ed8f18bb2484834065 Author: Pekka Lampila <pekka.lampila at iki.fi> Date: Thu Dec 20 11:34:25 2007 +0200 Fix Array.sort with RETURNINDEXEDARRAY when some values were set to undefined diff --git a/libswfdec/swfdec_as_array.c b/libswfdec/swfdec_as_array.c index 476e401..151b159 100644 --- a/libswfdec/swfdec_as_array.c +++ b/libswfdec/swfdec_as_array.c @@ -1030,7 +1030,7 @@ swfdec_as_array_foreach_sort_rename (SwfdecAsObject *object, return variable; if (SWFDEC_AS_VALUE_IS_UNDEFINED (value)) - value = &fdata->undefined; + return NULL; for (i = 0; i < fdata->order_size; i++) { if (fdata->order[i] == value) { @@ -1108,7 +1108,8 @@ swfdec_as_array_sort_set_undefined_indexedarray (SwfdecAsObject *object, do { var = swfdec_as_double_to_string (object->context, num); num++; - } while (swfdec_as_object_get_variable (object, var, &val)); + } while (swfdec_as_object_get_variable (object, var, &val) && + !SWFDEC_AS_VALUE_IS_UNDEFINED (&val)); var = swfdec_as_double_to_string (fdata->object_new->context, idx + i); SWFDEC_AS_VALUE_SET_INT (&val, num - 1); swfdec_as_object_set_variable (fdata->object_new, var, &val); commit 071472ec92d7dfa34931047b990998fa5aa3f883 Author: Pekka Lampila <pekka.lampila at iki.fi> Date: Thu Dec 20 10:28:26 2007 +0200 Make Array.splice require at least one argument diff --git a/libswfdec/swfdec_as_array.c b/libswfdec/swfdec_as_array.c index e209642..476e401 100644 --- a/libswfdec/swfdec_as_array.c +++ b/libswfdec/swfdec_as_array.c @@ -860,19 +860,15 @@ swfdec_as_array_splice (SwfdecAsContext *cx, SwfdecAsObject *object, guint argc, SwfdecAsObject *object_new; SwfdecAsArray *array_new; - if (object == NULL) + if (object == NULL || argc == 0) return; length = swfdec_as_array_length (object); - if (argc > 0) { - start_index = swfdec_as_value_to_integer (cx, &argv[0]); - if (start_index < 0) - start_index = length + start_index; - start_index = CLAMP (start_index, 0, length); - } else { - start_index = 0; - } + start_index = swfdec_as_value_to_integer (cx, &argv[0]); + if (start_index < 0) + start_index = length + start_index; + start_index = CLAMP (start_index, 0, length); if (argc > 1) { num_remove = CLAMP (swfdec_as_value_to_integer (cx, &argv[1]), 0, commit 1e2ec1ae45ee110ddfe25adc9da30f26b3c3bdde Author: Pekka Lampila <pekka.lampila at iki.fi> Date: Thu Dec 20 10:12:55 2007 +0200 Add a test to see what [] does when _global.Array is missing diff --git a/test/trace/Makefile.am b/test/trace/Makefile.am index fe46006..774f5b7 100644 --- a/test/trace/Makefile.am +++ b/test/trace/Makefile.am @@ -121,6 +121,15 @@ EXTRA_DIST = \ array-new-override-7.swf.trace \ array-new-override-8.swf \ array-new-override-8.swf.trace \ + array-no-object.as \ + array-no-object-5.swf \ + array-no-object-5.swf.trace \ + array-no-object-6.swf \ + array-no-object-6.swf.trace \ + array-no-object-7.swf \ + array-no-object-7.swf.trace \ + array-no-object-8.swf \ + array-no-object-8.swf.trace \ array-properties.as \ array-properties-5.swf \ array-properties-5.swf.trace \ diff --git a/test/trace/array-no-object-5.swf b/test/trace/array-no-object-5.swf new file mode 100644 index 0000000..a711a5e Binary files /dev/null and b/test/trace/array-no-object-5.swf differ diff --git a/test/trace/array-no-object-5.swf.trace b/test/trace/array-no-object-5.swf.trace new file mode 100644 index 0000000..8542eaa --- /dev/null +++ b/test/trace/array-no-object-5.swf.trace @@ -0,0 +1,8 @@ +Before deleting Array +1,2 +undefined +2 +After deleting Array +[type Object] +undefined +2 diff --git a/test/trace/array-no-object-6.swf b/test/trace/array-no-object-6.swf new file mode 100644 index 0000000..1abf021 Binary files /dev/null and b/test/trace/array-no-object-6.swf differ diff --git a/test/trace/array-no-object-6.swf.trace b/test/trace/array-no-object-6.swf.trace new file mode 100644 index 0000000..8542eaa --- /dev/null +++ b/test/trace/array-no-object-6.swf.trace @@ -0,0 +1,8 @@ +Before deleting Array +1,2 +undefined +2 +After deleting Array +[type Object] +undefined +2 diff --git a/test/trace/array-no-object-7.swf b/test/trace/array-no-object-7.swf new file mode 100644 index 0000000..e4b0920 Binary files /dev/null and b/test/trace/array-no-object-7.swf differ diff --git a/test/trace/array-no-object-7.swf.trace b/test/trace/array-no-object-7.swf.trace new file mode 100644 index 0000000..8542eaa --- /dev/null +++ b/test/trace/array-no-object-7.swf.trace @@ -0,0 +1,8 @@ +Before deleting Array +1,2 +undefined +2 +After deleting Array +[type Object] +undefined +2 diff --git a/test/trace/array-no-object-8.swf b/test/trace/array-no-object-8.swf new file mode 100644 index 0000000..34ee36c Binary files /dev/null and b/test/trace/array-no-object-8.swf differ diff --git a/test/trace/array-no-object-8.swf.trace b/test/trace/array-no-object-8.swf.trace new file mode 100644 index 0000000..8542eaa --- /dev/null +++ b/test/trace/array-no-object-8.swf.trace @@ -0,0 +1,8 @@ +Before deleting Array +1,2 +undefined +2 +After deleting Array +[type Object] +undefined +2 diff --git a/test/trace/array-no-object.as b/test/trace/array-no-object.as new file mode 100644 index 0000000..33f3dbb --- /dev/null +++ b/test/trace/array-no-object.as @@ -0,0 +1,17 @@ +// makeswf -v 7 -r 1 -o array-no-object-7.swf array-no-object.as + +trace ("Before deleting Array"); +var a = [1, 2]; +trace (a); +trace (a.__constructor__); +trace (a.length); + +delete Array; + +trace ("After deleting Array"); +var b = [1, 2]; +trace (b); +trace (b.__constructor__); +trace (b.length); + +loadMovie ("FSCommand:quit", ""); commit 3c2cbe91f05ec4b127899b649cf109b7444b36fb Author: Pekka Lampila <pekka.lampila at iki.fi> Date: Thu Dec 20 10:11:15 2007 +0200 Don't fail in swfdec_as_array_new if _global.Array is missing diff --git a/libswfdec/swfdec_as_array.c b/libswfdec/swfdec_as_array.c index 0da4f48..e209642 100644 --- a/libswfdec/swfdec_as_array.c +++ b/libswfdec/swfdec_as_array.c @@ -569,9 +569,8 @@ swfdec_as_array_new (SwfdecAsContext *context) ret = g_object_new (SWFDEC_TYPE_AS_ARRAY, NULL); swfdec_as_object_add (ret, context, sizeof (SwfdecAsArray)); swfdec_as_object_get_variable (context->global, SWFDEC_AS_STR_Array, &val); - if (!SWFDEC_AS_VALUE_IS_OBJECT (&val)) - return NULL; - swfdec_as_object_set_constructor (ret, SWFDEC_AS_VALUE_GET_OBJECT (&val)); + if (SWFDEC_AS_VALUE_IS_OBJECT (&val)) + swfdec_as_object_set_constructor (ret, SWFDEC_AS_VALUE_GET_OBJECT (&val)); swfdec_as_array_set_length (SWFDEC_AS_ARRAY (ret), 0);
Possibly Parallel Threads
- 5 commits - libswfdec/swfdec_html_parser.c libswfdec/swfdec_text_field.c libswfdec/swfdec_text_field_movie_as.c libswfdec/swfdec_text_field_movie.c libswfdec/swfdec_xml.c test/trace
- 8 commits - libswfdec/swfdec_as_interpret.c libswfdec/swfdec_sound.c libswfdec/swfdec_sound.h test/trace
- 4 commits - libswfdec/swfdec_as_interpret.c test/trace
- 9 commits - libswfdec/swfdec_as_string.c libswfdec/swfdec_color_as.c libswfdec/swfdec_interval.c test/image test/trace
- Branch 'as' - 6 commits - libswfdec/swfdec_as_array.c libswfdec/swfdec_button_movie.c libswfdec/swfdec_morph_movie.c libswfdec/swfdec_movie_asprops.c libswfdec/swfdec_movie.c libswfdec/swfdec_movie.h libswfdec/swfdec_player.c libswfdec/swfdec_sprite.c