[Swfdec-commits] 14 commits - NEWS swfdec/swfdec_as_date.c swfdec/swfdec_as_strings.c test/trace

Pekka Lampila medar at kemper.freedesktop.org
Tue Jul 29 06:17:22 PDT 2008


 NEWS                                     |   12 +
 swfdec/swfdec_as_date.c                  |   64 ++++-
 swfdec/swfdec_as_strings.c               |    1 
 test/trace/Makefile.am                   |   18 +
 test/trace/date-constructor-5.swf        |binary
 test/trace/date-constructor-5.swf.trace  |  333 +++++++++++++++++++++++++++++++
 test/trace/date-constructor-6.swf        |binary
 test/trace/date-constructor-6.swf.trace  |  333 +++++++++++++++++++++++++++++++
 test/trace/date-constructor-7.swf        |binary
 test/trace/date-constructor-7.swf.trace  |  331 ++++++++++++++++++++++++++++++
 test/trace/date-constructor-8.swf        |binary
 test/trace/date-constructor-8.swf.trace  |  331 ++++++++++++++++++++++++++++++
 test/trace/date-constructor.as           |   21 +
 test/trace/date-set-multiple-5.swf       |binary
 test/trace/date-set-multiple-5.swf.trace |   46 ++++
 test/trace/date-set-multiple-6.swf       |binary
 test/trace/date-set-multiple-6.swf.trace |   46 ++++
 test/trace/date-set-multiple-7.swf       |binary
 test/trace/date-set-multiple-7.swf.trace |   46 ++++
 test/trace/date-set-multiple-8.swf       |binary
 test/trace/date-set-multiple-8.swf.trace |   46 ++++
 test/trace/date-set-multiple.as          |   31 ++
 test/trace/date-set-time-5.swf           |binary
 test/trace/date-set-time-5.swf.trace     |  267 ++++++++++++++++++++++++
 test/trace/date-set-time-6.swf           |binary
 test/trace/date-set-time-6.swf.trace     |  268 ++++++++++++++++++++++++
 test/trace/date-set-time-7.swf           |binary
 test/trace/date-set-time-7.swf.trace     |  268 ++++++++++++++++++++++++
 test/trace/date-set-time-8.swf           |binary
 test/trace/date-set-time-8.swf.trace     |  268 ++++++++++++++++++++++++
 test/trace/date-set-time.as              |   43 ++++
 31 files changed, 2761 insertions(+), 12 deletions(-)

New commits:
commit 7f17fa6d0a740ee0eab4cda4248601fbd114dac5
Merge: 4d6afa6... 1e936cd...
Author: Pekka Lampila <pekka.lampila at iki.fi>
Date:   Tue Jul 29 16:17:34 2008 +0300

    Merge branch '0.6'
    
    Conflicts:
    
    	NEWS
    	configure.ac
    	swfdec/swfdec_as_strings.c

diff --cc NEWS
index 092935f,a17846c..19b0163
--- a/NEWS
+++ b/NEWS
@@@ -1,23 -1,16 +1,35 @@@
  
 + 0.7.2 ("Rock You")
 +
 +Here is - roughly 3 months too late - the first development release of the 
 +Swfdec 0.7 series:
 +- lots of conformance fixes that make lots of Flash files work
 +- new (de)compiler framework in vivified debugger
 +- fullscreen support
 +- handle focus properly
 +- lots of TextField fixes (including onScroller and onChanged events)
 +- TextFields can now receive keyboard input
 +- extend SwfdecAudio API to allow partially loaded streams and volume changes
 +- the Sound object is now fully supported
 +- rework loading of external resources to be more compatible
 +- significant speedups to the Actionscript interpreter
 +- noticable speedups to rendering infrastructure and new API that allows
 +  custom speedups
 +- removed unmaintained ffmpeg, mad and OSS support
 +- lots of bug fixes
 +
+  0.6.8 ("Mario Rush")
+ 
+ And another bugfix release.
+ - fix a crash when decoding 1x1 JPEG images
+ - fix a crash in XMLSocket.send
+ - fix crashes when FLV decoding was aborted
+ - fix a crash in exception handling code
+ - fix some infinite loops with prototype loops
+ - fix crasher when handling broken dates
+ - fix crashers with native constructors found in testing
+ - compatibility fixes: compile with gold linker, make includes work from C++
+ 
   0.6.6 ("Faith Fighter")
  
  Here's another bugfix release.
diff --cc swfdec/swfdec_as_strings.c
index 1bb71a6,e7428a4..a5106eb
--- a/swfdec/swfdec_as_strings.c
+++ b/swfdec/swfdec_as_strings.c
@@@ -491,42 -491,6 +491,43 @@@ const char swfdec_as_strings[] 
    SWFDEC_AS_CONSTANT_STRING ("height")
    SWFDEC_AS_CONSTANT_STRING ("deblocking")
    SWFDEC_AS_CONSTANT_STRING ("smoothing")
 +  SWFDEC_AS_CONSTANT_STRING ("onKillFocus")
 +  SWFDEC_AS_CONSTANT_STRING ("onSetFocus")
 +  SWFDEC_AS_CONSTANT_STRING ("Selection")
 +  SWFDEC_AS_CONSTANT_STRING ("tabEnabled")
 +  SWFDEC_AS_CONSTANT_STRING ("focusEnabled")
 +  SWFDEC_AS_CONSTANT_STRING ("ascent")
 +  SWFDEC_AS_CONSTANT_STRING ("descent")
 +  SWFDEC_AS_CONSTANT_STRING ("textFieldHeight")
 +  SWFDEC_AS_CONSTANT_STRING ("textFieldWidth")
 +  SWFDEC_AS_CONSTANT_STRING ("tabChildren")
 +  SWFDEC_AS_CONSTANT_STRING ("tabIndex")
 +  SWFDEC_AS_CONSTANT_STRING ("onChanged")
 +  SWFDEC_AS_CONSTANT_STRING ("fullScreen")
 +  SWFDEC_AS_CONSTANT_STRING ("onFullScreen")
 +  SWFDEC_AS_CONSTANT_STRING ("_customHeaders")
 +  SWFDEC_AS_CONSTANT_STRING ("Content-Type")
 +  SWFDEC_AS_CONSTANT_STRING ("ll")
 +  SWFDEC_AS_CONSTANT_STRING ("lr")
 +  SWFDEC_AS_CONSTANT_STRING ("rl")
 +  SWFDEC_AS_CONSTANT_STRING ("rr")
 +  SWFDEC_AS_CONSTANT_STRING ("flash")
 +  SWFDEC_AS_CONSTANT_STRING ("geom")
 +  SWFDEC_AS_CONSTANT_STRING ("ColorTransform")
 +  SWFDEC_AS_CONSTANT_STRING ("Transform")
 +  SWFDEC_AS_CONSTANT_STRING ("bufferLength")
 +  SWFDEC_AS_CONSTANT_STRING ("bufferTime")
 +  SWFDEC_AS_CONSTANT_STRING ("audiocodec")
 +  SWFDEC_AS_CONSTANT_STRING ("currentFps")
 +  SWFDEC_AS_CONSTANT_STRING ("decodedFrames")
 +  SWFDEC_AS_CONSTANT_STRING ("liveDelay")
 +  SWFDEC_AS_CONSTANT_STRING ("videoCodec")
 +  SWFDEC_AS_CONSTANT_STRING ("System")
 +  SWFDEC_AS_CONSTANT_STRING ("__resolve")
 +  SWFDEC_AS_CONSTANT_STRING ("Rectangle")
 +  SWFDEC_AS_CONSTANT_STRING ("BitmapData")
 +  SWFDEC_AS_CONSTANT_STRING ("tx")
 +  SWFDEC_AS_CONSTANT_STRING ("ty")
+   SWFDEC_AS_CONSTANT_STRING ("Invalid Date")
    /* add more here */
  ;
commit 4d6afa68f04d9d81f316f5032a2bc3dca1bdf45f
Author: Pekka Lampila <pekka.lampila at iki.fi>
Date:   Tue Jul 29 16:09:52 2008 +0300

    Add a test for setting multiple fields with one set method for Date

diff --git a/test/trace/Makefile.am b/test/trace/Makefile.am
index e6ef483..b2b4fa9 100644
--- a/test/trace/Makefile.am
+++ b/test/trace/Makefile.am
@@ -1036,6 +1036,15 @@ EXTRA_DIST = \
 	date-properties-7.swf.trace \
 	date-properties-8.swf \
 	date-properties-8.swf.trace \
+	date-set-multiple.as \
+	date-set-multiple-5.swf \
+	date-set-multiple-5.swf.trace \
+	date-set-multiple-6.swf \
+	date-set-multiple-6.swf.trace \
+	date-set-multiple-7.swf \
+	date-set-multiple-7.swf.trace \
+	date-set-multiple-8.swf \
+	date-set-multiple-8.swf.trace \
 	date-set-time.as \
 	date-set-time-5.swf \
 	date-set-time-5.swf.trace \
diff --git a/test/trace/date-set-multiple-5.swf b/test/trace/date-set-multiple-5.swf
new file mode 100644
index 0000000..05cd126
Binary files /dev/null and b/test/trace/date-set-multiple-5.swf differ
diff --git a/test/trace/date-set-multiple-5.swf.trace b/test/trace/date-set-multiple-5.swf.trace
new file mode 100644
index 0000000..afd4f50
--- /dev/null
+++ b/test/trace/date-set-multiple-5.swf.trace
@@ -0,0 +1,46 @@
+Setting multiple fields with single setWhatever call
+Testing: setYear
+Sun Mar 3 14:13:12 GMT+0000 1901
+-2172131207989
+Testing: setFullYear
+Sat Mar 3 14:13:12 GMT+0000 1
+-62130275207989
+Testing: setUTCFullYear
+Sat Mar 3 14:13:12 GMT+0000 1
+-62130275207989
+Testing: setMonth
+Sun Feb 2 14:13:12 GMT+0000 2020
+1580652792011
+Testing: setUTCMonth
+Sun Feb 2 14:13:12 GMT+0000 2020
+1580652792011
+Testing: setDate
+Sun Nov 1 14:13:12 GMT+0000 2020
+1604239992011
+Testing: setUTCDate
+Sun Nov 1 14:13:12 GMT+0000 2020
+1604239992011
+Testing: setHours
+Sun Nov 15 01:02:03 GMT+0000 2020
+1605402123004
+Testing: setUTCHours
+Sun Nov 15 01:02:03 GMT+0000 2020
+1605402123004
+Testing: setMinutes
+Sun Nov 15 14:01:02 GMT+0000 2020
+1605448862003
+Testing: setUTCMinutes
+Sun Nov 15 14:01:02 GMT+0000 2020
+1605448862003
+Testing: setSeconds
+Sun Nov 15 14:13:01 GMT+0000 2020
+1605449581002
+Testing: setUTCSeconds
+Sun Nov 15 14:13:01 GMT+0000 2020
+1605449581002
+Testing: setMilliseconds
+Sun Nov 15 14:13:12 GMT+0000 2020
+1605449592001
+Testing: setUTCMilliseconds
+Sun Nov 15 14:13:12 GMT+0000 2020
+1605449592001
diff --git a/test/trace/date-set-multiple-6.swf b/test/trace/date-set-multiple-6.swf
new file mode 100644
index 0000000..20bfe08
Binary files /dev/null and b/test/trace/date-set-multiple-6.swf differ
diff --git a/test/trace/date-set-multiple-6.swf.trace b/test/trace/date-set-multiple-6.swf.trace
new file mode 100644
index 0000000..afd4f50
--- /dev/null
+++ b/test/trace/date-set-multiple-6.swf.trace
@@ -0,0 +1,46 @@
+Setting multiple fields with single setWhatever call
+Testing: setYear
+Sun Mar 3 14:13:12 GMT+0000 1901
+-2172131207989
+Testing: setFullYear
+Sat Mar 3 14:13:12 GMT+0000 1
+-62130275207989
+Testing: setUTCFullYear
+Sat Mar 3 14:13:12 GMT+0000 1
+-62130275207989
+Testing: setMonth
+Sun Feb 2 14:13:12 GMT+0000 2020
+1580652792011
+Testing: setUTCMonth
+Sun Feb 2 14:13:12 GMT+0000 2020
+1580652792011
+Testing: setDate
+Sun Nov 1 14:13:12 GMT+0000 2020
+1604239992011
+Testing: setUTCDate
+Sun Nov 1 14:13:12 GMT+0000 2020
+1604239992011
+Testing: setHours
+Sun Nov 15 01:02:03 GMT+0000 2020
+1605402123004
+Testing: setUTCHours
+Sun Nov 15 01:02:03 GMT+0000 2020
+1605402123004
+Testing: setMinutes
+Sun Nov 15 14:01:02 GMT+0000 2020
+1605448862003
+Testing: setUTCMinutes
+Sun Nov 15 14:01:02 GMT+0000 2020
+1605448862003
+Testing: setSeconds
+Sun Nov 15 14:13:01 GMT+0000 2020
+1605449581002
+Testing: setUTCSeconds
+Sun Nov 15 14:13:01 GMT+0000 2020
+1605449581002
+Testing: setMilliseconds
+Sun Nov 15 14:13:12 GMT+0000 2020
+1605449592001
+Testing: setUTCMilliseconds
+Sun Nov 15 14:13:12 GMT+0000 2020
+1605449592001
diff --git a/test/trace/date-set-multiple-7.swf b/test/trace/date-set-multiple-7.swf
new file mode 100644
index 0000000..c561e4b
Binary files /dev/null and b/test/trace/date-set-multiple-7.swf differ
diff --git a/test/trace/date-set-multiple-7.swf.trace b/test/trace/date-set-multiple-7.swf.trace
new file mode 100644
index 0000000..afd4f50
--- /dev/null
+++ b/test/trace/date-set-multiple-7.swf.trace
@@ -0,0 +1,46 @@
+Setting multiple fields with single setWhatever call
+Testing: setYear
+Sun Mar 3 14:13:12 GMT+0000 1901
+-2172131207989
+Testing: setFullYear
+Sat Mar 3 14:13:12 GMT+0000 1
+-62130275207989
+Testing: setUTCFullYear
+Sat Mar 3 14:13:12 GMT+0000 1
+-62130275207989
+Testing: setMonth
+Sun Feb 2 14:13:12 GMT+0000 2020
+1580652792011
+Testing: setUTCMonth
+Sun Feb 2 14:13:12 GMT+0000 2020
+1580652792011
+Testing: setDate
+Sun Nov 1 14:13:12 GMT+0000 2020
+1604239992011
+Testing: setUTCDate
+Sun Nov 1 14:13:12 GMT+0000 2020
+1604239992011
+Testing: setHours
+Sun Nov 15 01:02:03 GMT+0000 2020
+1605402123004
+Testing: setUTCHours
+Sun Nov 15 01:02:03 GMT+0000 2020
+1605402123004
+Testing: setMinutes
+Sun Nov 15 14:01:02 GMT+0000 2020
+1605448862003
+Testing: setUTCMinutes
+Sun Nov 15 14:01:02 GMT+0000 2020
+1605448862003
+Testing: setSeconds
+Sun Nov 15 14:13:01 GMT+0000 2020
+1605449581002
+Testing: setUTCSeconds
+Sun Nov 15 14:13:01 GMT+0000 2020
+1605449581002
+Testing: setMilliseconds
+Sun Nov 15 14:13:12 GMT+0000 2020
+1605449592001
+Testing: setUTCMilliseconds
+Sun Nov 15 14:13:12 GMT+0000 2020
+1605449592001
diff --git a/test/trace/date-set-multiple-8.swf b/test/trace/date-set-multiple-8.swf
new file mode 100644
index 0000000..efc2664
Binary files /dev/null and b/test/trace/date-set-multiple-8.swf differ
diff --git a/test/trace/date-set-multiple-8.swf.trace b/test/trace/date-set-multiple-8.swf.trace
new file mode 100644
index 0000000..afd4f50
--- /dev/null
+++ b/test/trace/date-set-multiple-8.swf.trace
@@ -0,0 +1,46 @@
+Setting multiple fields with single setWhatever call
+Testing: setYear
+Sun Mar 3 14:13:12 GMT+0000 1901
+-2172131207989
+Testing: setFullYear
+Sat Mar 3 14:13:12 GMT+0000 1
+-62130275207989
+Testing: setUTCFullYear
+Sat Mar 3 14:13:12 GMT+0000 1
+-62130275207989
+Testing: setMonth
+Sun Feb 2 14:13:12 GMT+0000 2020
+1580652792011
+Testing: setUTCMonth
+Sun Feb 2 14:13:12 GMT+0000 2020
+1580652792011
+Testing: setDate
+Sun Nov 1 14:13:12 GMT+0000 2020
+1604239992011
+Testing: setUTCDate
+Sun Nov 1 14:13:12 GMT+0000 2020
+1604239992011
+Testing: setHours
+Sun Nov 15 01:02:03 GMT+0000 2020
+1605402123004
+Testing: setUTCHours
+Sun Nov 15 01:02:03 GMT+0000 2020
+1605402123004
+Testing: setMinutes
+Sun Nov 15 14:01:02 GMT+0000 2020
+1605448862003
+Testing: setUTCMinutes
+Sun Nov 15 14:01:02 GMT+0000 2020
+1605448862003
+Testing: setSeconds
+Sun Nov 15 14:13:01 GMT+0000 2020
+1605449581002
+Testing: setUTCSeconds
+Sun Nov 15 14:13:01 GMT+0000 2020
+1605449581002
+Testing: setMilliseconds
+Sun Nov 15 14:13:12 GMT+0000 2020
+1605449592001
+Testing: setUTCMilliseconds
+Sun Nov 15 14:13:12 GMT+0000 2020
+1605449592001
diff --git a/test/trace/date-set-multiple.as b/test/trace/date-set-multiple.as
new file mode 100644
index 0000000..7db73f6
--- /dev/null
+++ b/test/trace/date-set-multiple.as
@@ -0,0 +1,31 @@
+// makeswf -v 7 -s 200x150 -r 15 -o date-set-multiple-7.swf date-set-multiple.as
+
+trace ("Setting multiple fields with single setWhatever call");
+
+var methods = [
+  "setYear",
+  "setFullYear",
+  "setUTCFullYear",
+  "setMonth",
+  "setUTCMonth",
+  "setDate",
+  "setUTCDate",
+  "setHours",
+  "setUTCHours",
+  "setMinutes",
+  "setUTCMinutes",
+  "setSeconds",
+  "setUTCSeconds",
+  "setMilliseconds",
+  "setUTCMilliseconds"
+];
+
+for (var i = 0; i < methods.length; i++) {
+  trace ("Testing: " + methods[i]);
+  var d = new Date (2020, 10, 15, 14, 13 ,12, 11);
+  d[methods[i]] (1, 2, 3, 4, 5, 6, 7, 8, 9, 10);
+  trace (d);
+  trace (d.valueOf ());
+}
+
+getURL ("fscommand:quit");
commit 78b5c5db6f9930e68a4fe0c81e19a3c6def06698
Author: Pekka Lampila <pekka.lampila at iki.fi>
Date:   Tue Jul 29 16:02:28 2008 +0300

    Add a test for Date.setTime

diff --git a/test/trace/Makefile.am b/test/trace/Makefile.am
index 6256f85..e6ef483 100644
--- a/test/trace/Makefile.am
+++ b/test/trace/Makefile.am
@@ -1036,6 +1036,15 @@ EXTRA_DIST = \
 	date-properties-7.swf.trace \
 	date-properties-8.swf \
 	date-properties-8.swf.trace \
+	date-set-time.as \
+	date-set-time-5.swf \
+	date-set-time-5.swf.trace \
+	date-set-time-6.swf \
+	date-set-time-6.swf.trace \
+	date-set-time-7.swf \
+	date-set-time-7.swf.trace \
+	date-set-time-8.swf \
+	date-set-time-8.swf.trace \
 	default.stas \
 	default.sts \
 	definefunction2-arguments.swf \
diff --git a/test/trace/date-set-time-5.swf b/test/trace/date-set-time-5.swf
new file mode 100644
index 0000000..1880f7f
Binary files /dev/null and b/test/trace/date-set-time-5.swf differ
diff --git a/test/trace/date-set-time-5.swf.trace b/test/trace/date-set-time-5.swf.trace
new file mode 100644
index 0000000..008e7d5
--- /dev/null
+++ b/test/trace/date-set-time-5.swf.trace
@@ -0,0 +1,267 @@
+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!
+26: valueOf!
+26: toString!
+27: valueOf!
+27: toString!
+28: valueOf!
+28: toString!
+29: valueOf!
+29: toString!
+Go
+NaN
+Invalid Date
+NaN
+123
+Thu Jan 1 00:00:00 GMT+0000 1970
+123
+123124
+123124
+123124
+123124
+-123124
+-123124
+-123124
+Testing: (0)  (undefined)
+Invalid Date
+NaN
+Testing: (1) null (null)
+Thu Jan 1 00:00:00 GMT+0000 1970
+0
+Testing: (2) true (boolean)
+Thu Jan 1 00:00:00 GMT+0000 1970
+1
+Testing: (3) false (boolean)
+Thu Jan 1 00:00:00 GMT+0000 1970
+0
+Testing: (4) 0 (number)
+Thu Jan 1 00:00:00 GMT+0000 1970
+0
+Testing: (5) 1 (number)
+Thu Jan 1 00:00:00 GMT+0000 1970
+1
+Testing: (6) 0.5 (number)
+Thu Jan 1 00:00:00 GMT+0000 1970
+0
+Testing: (7) -1 (number)
+Wed Dec 31 23:59:59 GMT+0000 1969
+-1
+Testing: (8) -0.5 (number)
+Thu Jan 1 00:00:00 GMT+0000 1970
+0
+Testing: (9) Infinity (number)
+Invalid Date
+NaN
+Testing: (10) -Infinity (number)
+Invalid Date
+NaN
+Testing: (11) NaN (number)
+Invalid Date
+NaN
+Testing: (12)  (string)
+Invalid Date
+NaN
+Testing: (13) 0 (string)
+Thu Jan 1 00:00:00 GMT+0000 1970
+0
+Testing: (14) -0 (string)
+Thu Jan 1 00:00:00 GMT+0000 1970
+0
+Testing: (15) 0.0 (string)
+Thu Jan 1 00:00:00 GMT+0000 1970
+0
+Testing: (16) 1 (string)
+Thu Jan 1 00:00:00 GMT+0000 1970
+1
+Testing: (17) Hello World! (string)
+Invalid Date
+NaN
+Testing: (18) true (string)
+Invalid Date
+NaN
+Testing: (19) _level0 (string)
+Invalid Date
+NaN
+Testing: (20) äöü (string)
+Invalid Date
+NaN
+Testing: (21) _level0 (movieclip)
+Invalid Date
+NaN
+Testing: (22) [object Object] (object)
+Invalid Date
+NaN
+Testing: (23) 1239752134235.94 (object)
+Tue Apr 14 23:35:34 GMT+0000 2009
+1239752134235
+Testing: (24)  (object)
+Invalid Date
+NaN
+Testing: (25)  (undefined)
+Invalid Date
+NaN
+Testing: (26) [type Object] (object)
+valueOf called
+Invalid Date
+NaN
+Testing: (27) [type Object] (object)
+Invalid Date
+NaN
+Testing: (28) [object Object] (object)
+valueOf called with 
+Invalid Date
+NaN
+Testing: (29)  (object)
+Thu Jan 1 00:00:00 GMT+0000 1970
+0
+Testing: (30)  (object)
+0: valueOf!
+Thu Jan 1 00:00:00 GMT+0000 1970
+0
+Testing: (31) null (object)
+1: valueOf!
+Thu Jan 1 00:00:00 GMT+0000 1970
+0
+Testing: (32) true (object)
+2: valueOf!
+Thu Jan 1 00:00:00 GMT+0000 1970
+1
+Testing: (33) false (object)
+3: valueOf!
+Thu Jan 1 00:00:00 GMT+0000 1970
+0
+Testing: (34) 0 (object)
+4: valueOf!
+Thu Jan 1 00:00:00 GMT+0000 1970
+0
+Testing: (35) 1 (object)
+5: valueOf!
+Thu Jan 1 00:00:00 GMT+0000 1970
+1
+Testing: (36) 0.5 (object)
+6: valueOf!
+Thu Jan 1 00:00:00 GMT+0000 1970
+0
+Testing: (37) -1 (object)
+7: valueOf!
+Wed Dec 31 23:59:59 GMT+0000 1969
+-1
+Testing: (38) -0.5 (object)
+8: valueOf!
+Thu Jan 1 00:00:00 GMT+0000 1970
+0
+Testing: (39) Infinity (object)
+9: valueOf!
+Invalid Date
+NaN
+Testing: (40) -Infinity (object)
+10: valueOf!
+Invalid Date
+NaN
+Testing: (41) NaN (object)
+11: valueOf!
+Invalid Date
+NaN
+Testing: (42)  (object)
+12: valueOf!
+Invalid Date
+NaN
+Testing: (43) 0 (object)
+13: valueOf!
+Thu Jan 1 00:00:00 GMT+0000 1970
+0
+Testing: (44) -0 (object)
+14: valueOf!
+Thu Jan 1 00:00:00 GMT+0000 1970
+0
+Testing: (45) 0.0 (object)
+15: valueOf!
+Thu Jan 1 00:00:00 GMT+0000 1970
+0
+Testing: (46) 1 (object)
+16: valueOf!
+Thu Jan 1 00:00:00 GMT+0000 1970
+1
+Testing: (47) Hello World! (object)
+17: valueOf!
+Invalid Date
+NaN
+Testing: (48) true (object)
+18: valueOf!
+Invalid Date
+NaN
+Testing: (49) _level0 (object)
+19: valueOf!
+Invalid Date
+NaN
+Testing: (50) äöü (object)
+20: valueOf!
+Invalid Date
+NaN
+Testing: (51) _level0 (object)
+21: valueOf!
+Invalid Date
+NaN
+Testing: (52) [type Object] (object)
+22: valueOf!
+Invalid Date
+NaN
+Testing: (53) [type Object] (object)
+23: valueOf!
+Invalid Date
+NaN
+Testing: (54) [type Object] (object)
+24: valueOf!
+Invalid Date
+NaN
+Testing: (55)  (object)
+25: valueOf!
+Thu Jan 1 00:00:00 GMT+0000 1970
+0
+Testing: (56) [type Object] (object)
+26: valueOf!
+Invalid Date
+NaN
+Testing: (57) [type Object] (object)
+27: valueOf!
+Invalid Date
+NaN
+Testing: (58) [type Object] (object)
+28: valueOf!
+Invalid Date
+NaN
+Testing: (59) [type Object] (object)
+29: valueOf!
+Invalid Date
+NaN
diff --git a/test/trace/date-set-time-6.swf b/test/trace/date-set-time-6.swf
new file mode 100644
index 0000000..af54b80
Binary files /dev/null and b/test/trace/date-set-time-6.swf differ
diff --git a/test/trace/date-set-time-6.swf.trace b/test/trace/date-set-time-6.swf.trace
new file mode 100644
index 0000000..496cd07
--- /dev/null
+++ b/test/trace/date-set-time-6.swf.trace
@@ -0,0 +1,268 @@
+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!
+28: valueOf!
+28: toString!
+29: valueOf!
+29: toString!
+Go
+NaN
+Invalid Date
+NaN
+123
+Thu Jan 1 00:00:00 GMT+0000 1970
+123
+123124
+123124
+123124
+123124
+-123124
+-123124
+-123124
+Testing: (0)  (undefined)
+Invalid Date
+NaN
+Testing: (1) null (null)
+Thu Jan 1 00:00:00 GMT+0000 1970
+0
+Testing: (2) true (boolean)
+Thu Jan 1 00:00:00 GMT+0000 1970
+1
+Testing: (3) false (boolean)
+Thu Jan 1 00:00:00 GMT+0000 1970
+0
+Testing: (4) 0 (number)
+Thu Jan 1 00:00:00 GMT+0000 1970
+0
+Testing: (5) 1 (number)
+Thu Jan 1 00:00:00 GMT+0000 1970
+1
+Testing: (6) 0.5 (number)
+Thu Jan 1 00:00:00 GMT+0000 1970
+0
+Testing: (7) -1 (number)
+Wed Dec 31 23:59:59 GMT+0000 1969
+-1
+Testing: (8) -0.5 (number)
+Thu Jan 1 00:00:00 GMT+0000 1970
+0
+Testing: (9) Infinity (number)
+Invalid Date
+NaN
+Testing: (10) -Infinity (number)
+Invalid Date
+NaN
+Testing: (11) NaN (number)
+Invalid Date
+NaN
+Testing: (12)  (string)
+Invalid Date
+NaN
+Testing: (13) 0 (string)
+Thu Jan 1 00:00:00 GMT+0000 1970
+0
+Testing: (14) -0 (string)
+Thu Jan 1 00:00:00 GMT+0000 1970
+0
+Testing: (15) 0.0 (string)
+Thu Jan 1 00:00:00 GMT+0000 1970
+0
+Testing: (16) 1 (string)
+Thu Jan 1 00:00:00 GMT+0000 1970
+1
+Testing: (17) Hello World! (string)
+Invalid Date
+NaN
+Testing: (18) true (string)
+Invalid Date
+NaN
+Testing: (19) _level0 (string)
+Invalid Date
+NaN
+Testing: (20) äöü (string)
+Invalid Date
+NaN
+Testing: (21) _level0 (movieclip)
+Invalid Date
+NaN
+Testing: (22) [object Object] (object)
+Invalid Date
+NaN
+Testing: (23) Tue Apr 14 23:35:34 GMT+0000 2009 (object)
+Tue Apr 14 23:35:34 GMT+0000 2009
+1239752134235
+Testing: (24)  (object)
+Invalid Date
+NaN
+Testing: (25) [type Function] (function)
+Invalid Date
+NaN
+Testing: (26) [type Object] (object)
+valueOf called
+Invalid Date
+NaN
+Testing: (27) [type Object] (object)
+Invalid Date
+NaN
+Testing: (28) [object Object] (object)
+valueOf called with 
+Invalid Date
+NaN
+Testing: (29)  (object)
+Thu Jan 1 00:00:00 GMT+0000 1970
+0
+Testing: (30)  (object)
+0: valueOf!
+Thu Jan 1 00:00:00 GMT+0000 1970
+0
+Testing: (31) null (object)
+1: valueOf!
+Thu Jan 1 00:00:00 GMT+0000 1970
+0
+Testing: (32) true (object)
+2: valueOf!
+Thu Jan 1 00:00:00 GMT+0000 1970
+1
+Testing: (33) false (object)
+3: valueOf!
+Thu Jan 1 00:00:00 GMT+0000 1970
+0
+Testing: (34) 0 (object)
+4: valueOf!
+Thu Jan 1 00:00:00 GMT+0000 1970
+0
+Testing: (35) 1 (object)
+5: valueOf!
+Thu Jan 1 00:00:00 GMT+0000 1970
+1
+Testing: (36) 0.5 (object)
+6: valueOf!
+Thu Jan 1 00:00:00 GMT+0000 1970
+0
+Testing: (37) -1 (object)
+7: valueOf!
+Wed Dec 31 23:59:59 GMT+0000 1969
+-1
+Testing: (38) -0.5 (object)
+8: valueOf!
+Thu Jan 1 00:00:00 GMT+0000 1970
+0
+Testing: (39) Infinity (object)
+9: valueOf!
+Invalid Date
+NaN
+Testing: (40) -Infinity (object)
+10: valueOf!
+Invalid Date
+NaN
+Testing: (41) NaN (object)
+11: valueOf!
+Invalid Date
+NaN
+Testing: (42)  (object)
+12: valueOf!
+Invalid Date
+NaN
+Testing: (43) 0 (object)
+13: valueOf!
+Thu Jan 1 00:00:00 GMT+0000 1970
+0
+Testing: (44) -0 (object)
+14: valueOf!
+Thu Jan 1 00:00:00 GMT+0000 1970
+0
+Testing: (45) 0.0 (object)
+15: valueOf!
+Thu Jan 1 00:00:00 GMT+0000 1970
+0
+Testing: (46) 1 (object)
+16: valueOf!
+Thu Jan 1 00:00:00 GMT+0000 1970
+1
+Testing: (47) Hello World! (object)
+17: valueOf!
+Invalid Date
+NaN
+Testing: (48) true (object)
+18: valueOf!
+Invalid Date
+NaN
+Testing: (49) _level0 (object)
+19: valueOf!
+Invalid Date
+NaN
+Testing: (50) äöü (object)
+20: valueOf!
+Invalid Date
+NaN
+Testing: (51) _level0 (object)
+21: valueOf!
+Invalid Date
+NaN
+Testing: (52) [type Object] (object)
+22: valueOf!
+Invalid Date
+NaN
+Testing: (53) [type Object] (object)
+23: valueOf!
+Invalid Date
+NaN
+Testing: (54) [type Object] (object)
+24: valueOf!
+Invalid Date
+NaN
+Testing: (55) [type Object] (object)
+25: valueOf!
+Invalid Date
+NaN
+Testing: (56) [type Object] (object)
+26: valueOf!
+Invalid Date
+NaN
+Testing: (57) [type Object] (object)
+27: valueOf!
+Invalid Date
+NaN
+Testing: (58) [type Object] (object)
+28: valueOf!
+Invalid Date
+NaN
+Testing: (59) [type Object] (object)
+29: valueOf!
+Invalid Date
+NaN
diff --git a/test/trace/date-set-time-7.swf b/test/trace/date-set-time-7.swf
new file mode 100644
index 0000000..15e8d25
Binary files /dev/null and b/test/trace/date-set-time-7.swf differ
diff --git a/test/trace/date-set-time-7.swf.trace b/test/trace/date-set-time-7.swf.trace
new file mode 100644
index 0000000..bd9028f
--- /dev/null
+++ b/test/trace/date-set-time-7.swf.trace
@@ -0,0 +1,268 @@
+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!
+28: valueOf!
+28: toString!
+29: valueOf!
+29: toString!
+Go
+NaN
+Invalid Date
+NaN
+123
+Thu Jan 1 00:00:00 GMT+0000 1970
+123
+123124
+123124
+123124
+123124
+-123124
+-123124
+-123124
+Testing: (0) undefined (undefined)
+Invalid Date
+NaN
+Testing: (1) null (null)
+Invalid Date
+NaN
+Testing: (2) true (boolean)
+Thu Jan 1 00:00:00 GMT+0000 1970
+1
+Testing: (3) false (boolean)
+Thu Jan 1 00:00:00 GMT+0000 1970
+0
+Testing: (4) 0 (number)
+Thu Jan 1 00:00:00 GMT+0000 1970
+0
+Testing: (5) 1 (number)
+Thu Jan 1 00:00:00 GMT+0000 1970
+1
+Testing: (6) 0.5 (number)
+Thu Jan 1 00:00:00 GMT+0000 1970
+0
+Testing: (7) -1 (number)
+Wed Dec 31 23:59:59 GMT+0000 1969
+-1
+Testing: (8) -0.5 (number)
+Thu Jan 1 00:00:00 GMT+0000 1970
+0
+Testing: (9) Infinity (number)
+Invalid Date
+NaN
+Testing: (10) -Infinity (number)
+Invalid Date
+NaN
+Testing: (11) NaN (number)
+Invalid Date
+NaN
+Testing: (12)  (string)
+Invalid Date
+NaN
+Testing: (13) 0 (string)
+Thu Jan 1 00:00:00 GMT+0000 1970
+0
+Testing: (14) -0 (string)
+Thu Jan 1 00:00:00 GMT+0000 1970
+0
+Testing: (15) 0.0 (string)
+Thu Jan 1 00:00:00 GMT+0000 1970
+0
+Testing: (16) 1 (string)
+Thu Jan 1 00:00:00 GMT+0000 1970
+1
+Testing: (17) Hello World! (string)
+Invalid Date
+NaN
+Testing: (18) true (string)
+Invalid Date
+NaN
+Testing: (19) _level0 (string)
+Invalid Date
+NaN
+Testing: (20) äöü (string)
+Invalid Date
+NaN
+Testing: (21) _level0 (movieclip)
+Invalid Date
+NaN
+Testing: (22) [object Object] (object)
+Invalid Date
+NaN
+Testing: (23) Tue Apr 14 23:35:34 GMT+0000 2009 (object)
+Tue Apr 14 23:35:34 GMT+0000 2009
+1239752134235
+Testing: (24)  (object)
+Invalid Date
+NaN
+Testing: (25) [type Function] (function)
+Invalid Date
+NaN
+Testing: (26) [type Object] (object)
+valueOf called
+Invalid Date
+NaN
+Testing: (27) [type Object] (object)
+Invalid Date
+NaN
+Testing: (28) [object Object] (object)
+valueOf called with 
+Invalid Date
+NaN
+Testing: (29) undefined (object)
+Invalid Date
+NaN
+Testing: (30) undefined (object)
+0: valueOf!
+Invalid Date
+NaN
+Testing: (31) null (object)
+1: valueOf!
+Invalid Date
+NaN
+Testing: (32) true (object)
+2: valueOf!
+Thu Jan 1 00:00:00 GMT+0000 1970
+1
+Testing: (33) false (object)
+3: valueOf!
+Thu Jan 1 00:00:00 GMT+0000 1970
+0
+Testing: (34) 0 (object)
+4: valueOf!
+Thu Jan 1 00:00:00 GMT+0000 1970
+0
+Testing: (35) 1 (object)
+5: valueOf!
+Thu Jan 1 00:00:00 GMT+0000 1970
+1
+Testing: (36) 0.5 (object)
+6: valueOf!
+Thu Jan 1 00:00:00 GMT+0000 1970
+0
+Testing: (37) -1 (object)
+7: valueOf!
+Wed Dec 31 23:59:59 GMT+0000 1969
+-1
+Testing: (38) -0.5 (object)
+8: valueOf!
+Thu Jan 1 00:00:00 GMT+0000 1970
+0
+Testing: (39) Infinity (object)
+9: valueOf!
+Invalid Date
+NaN
+Testing: (40) -Infinity (object)
+10: valueOf!
+Invalid Date
+NaN
+Testing: (41) NaN (object)
+11: valueOf!
+Invalid Date
+NaN
+Testing: (42)  (object)
+12: valueOf!
+Invalid Date
+NaN
+Testing: (43) 0 (object)
+13: valueOf!
+Thu Jan 1 00:00:00 GMT+0000 1970
+0
+Testing: (44) -0 (object)
+14: valueOf!
+Thu Jan 1 00:00:00 GMT+0000 1970
+0
+Testing: (45) 0.0 (object)
+15: valueOf!
+Thu Jan 1 00:00:00 GMT+0000 1970
+0
+Testing: (46) 1 (object)
+16: valueOf!
+Thu Jan 1 00:00:00 GMT+0000 1970
+1
+Testing: (47) Hello World! (object)
+17: valueOf!
+Invalid Date
+NaN
+Testing: (48) true (object)
+18: valueOf!
+Invalid Date
+NaN
+Testing: (49) _level0 (object)
+19: valueOf!
+Invalid Date
+NaN
+Testing: (50) äöü (object)
+20: valueOf!
+Invalid Date
+NaN
+Testing: (51) _level0 (object)
+21: valueOf!
+Invalid Date
+NaN
+Testing: (52) [type Object] (object)
+22: valueOf!
+Invalid Date
+NaN
+Testing: (53) [type Object] (object)
+23: valueOf!
+Invalid Date
+NaN
+Testing: (54) [type Object] (object)
+24: valueOf!
+Invalid Date
+NaN
+Testing: (55) [type Object] (object)
+25: valueOf!
+Invalid Date
+NaN
+Testing: (56) [type Object] (object)
+26: valueOf!
+Invalid Date
+NaN
+Testing: (57) [type Object] (object)
+27: valueOf!
+Invalid Date
+NaN
+Testing: (58) [type Object] (object)
+28: valueOf!
+Invalid Date
+NaN
+Testing: (59) [type Object] (object)
+29: valueOf!
+Invalid Date
+NaN
diff --git a/test/trace/date-set-time-8.swf b/test/trace/date-set-time-8.swf
new file mode 100644
index 0000000..98af9b1
Binary files /dev/null and b/test/trace/date-set-time-8.swf differ
diff --git a/test/trace/date-set-time-8.swf.trace b/test/trace/date-set-time-8.swf.trace
new file mode 100644
index 0000000..bd9028f
--- /dev/null
+++ b/test/trace/date-set-time-8.swf.trace
@@ -0,0 +1,268 @@
+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!
+28: valueOf!
+28: toString!
+29: valueOf!
+29: toString!
+Go
+NaN
+Invalid Date
+NaN
+123
+Thu Jan 1 00:00:00 GMT+0000 1970
+123
+123124
+123124
+123124
+123124
+-123124
+-123124
+-123124
+Testing: (0) undefined (undefined)
+Invalid Date
+NaN
+Testing: (1) null (null)
+Invalid Date
+NaN
+Testing: (2) true (boolean)
+Thu Jan 1 00:00:00 GMT+0000 1970
+1
+Testing: (3) false (boolean)
+Thu Jan 1 00:00:00 GMT+0000 1970
+0
+Testing: (4) 0 (number)
+Thu Jan 1 00:00:00 GMT+0000 1970
+0
+Testing: (5) 1 (number)
+Thu Jan 1 00:00:00 GMT+0000 1970
+1
+Testing: (6) 0.5 (number)
+Thu Jan 1 00:00:00 GMT+0000 1970
+0
+Testing: (7) -1 (number)
+Wed Dec 31 23:59:59 GMT+0000 1969
+-1
+Testing: (8) -0.5 (number)
+Thu Jan 1 00:00:00 GMT+0000 1970
+0
+Testing: (9) Infinity (number)
+Invalid Date
+NaN
+Testing: (10) -Infinity (number)
+Invalid Date
+NaN
+Testing: (11) NaN (number)
+Invalid Date
+NaN
+Testing: (12)  (string)
+Invalid Date
+NaN
+Testing: (13) 0 (string)
+Thu Jan 1 00:00:00 GMT+0000 1970
+0
+Testing: (14) -0 (string)
+Thu Jan 1 00:00:00 GMT+0000 1970
+0
+Testing: (15) 0.0 (string)
+Thu Jan 1 00:00:00 GMT+0000 1970
+0
+Testing: (16) 1 (string)
+Thu Jan 1 00:00:00 GMT+0000 1970
+1
+Testing: (17) Hello World! (string)
+Invalid Date
+NaN
+Testing: (18) true (string)
+Invalid Date
+NaN
+Testing: (19) _level0 (string)
+Invalid Date
+NaN
+Testing: (20) äöü (string)
+Invalid Date
+NaN
+Testing: (21) _level0 (movieclip)
+Invalid Date
+NaN
+Testing: (22) [object Object] (object)
+Invalid Date
+NaN
+Testing: (23) Tue Apr 14 23:35:34 GMT+0000 2009 (object)
+Tue Apr 14 23:35:34 GMT+0000 2009
+1239752134235
+Testing: (24)  (object)
+Invalid Date
+NaN
+Testing: (25) [type Function] (function)
+Invalid Date
+NaN
+Testing: (26) [type Object] (object)
+valueOf called
+Invalid Date
+NaN
+Testing: (27) [type Object] (object)
+Invalid Date
+NaN
+Testing: (28) [object Object] (object)
+valueOf called with 
+Invalid Date
+NaN
+Testing: (29) undefined (object)
+Invalid Date
+NaN
+Testing: (30) undefined (object)
+0: valueOf!
+Invalid Date
+NaN
+Testing: (31) null (object)
+1: valueOf!
+Invalid Date
+NaN
+Testing: (32) true (object)
+2: valueOf!
+Thu Jan 1 00:00:00 GMT+0000 1970
+1
+Testing: (33) false (object)
+3: valueOf!
+Thu Jan 1 00:00:00 GMT+0000 1970
+0
+Testing: (34) 0 (object)
+4: valueOf!
+Thu Jan 1 00:00:00 GMT+0000 1970
+0
+Testing: (35) 1 (object)
+5: valueOf!
+Thu Jan 1 00:00:00 GMT+0000 1970
+1
+Testing: (36) 0.5 (object)
+6: valueOf!
+Thu Jan 1 00:00:00 GMT+0000 1970
+0
+Testing: (37) -1 (object)
+7: valueOf!
+Wed Dec 31 23:59:59 GMT+0000 1969
+-1
+Testing: (38) -0.5 (object)
+8: valueOf!
+Thu Jan 1 00:00:00 GMT+0000 1970
+0
+Testing: (39) Infinity (object)
+9: valueOf!
+Invalid Date
+NaN
+Testing: (40) -Infinity (object)
+10: valueOf!
+Invalid Date
+NaN
+Testing: (41) NaN (object)
+11: valueOf!
+Invalid Date
+NaN
+Testing: (42)  (object)
+12: valueOf!
+Invalid Date
+NaN
+Testing: (43) 0 (object)
+13: valueOf!
+Thu Jan 1 00:00:00 GMT+0000 1970
+0
+Testing: (44) -0 (object)
+14: valueOf!
+Thu Jan 1 00:00:00 GMT+0000 1970
+0
+Testing: (45) 0.0 (object)
+15: valueOf!
+Thu Jan 1 00:00:00 GMT+0000 1970
+0
+Testing: (46) 1 (object)
+16: valueOf!
+Thu Jan 1 00:00:00 GMT+0000 1970
+1
+Testing: (47) Hello World! (object)
+17: valueOf!
+Invalid Date
+NaN
+Testing: (48) true (object)
+18: valueOf!
+Invalid Date
+NaN
+Testing: (49) _level0 (object)
+19: valueOf!
+Invalid Date
+NaN
+Testing: (50) äöü (object)
+20: valueOf!
+Invalid Date
+NaN
+Testing: (51) _level0 (object)
+21: valueOf!
+Invalid Date
+NaN
+Testing: (52) [type Object] (object)
+22: valueOf!
+Invalid Date
+NaN
+Testing: (53) [type Object] (object)
+23: valueOf!
+Invalid Date
+NaN
+Testing: (54) [type Object] (object)
+24: valueOf!
+Invalid Date
+NaN
+Testing: (55) [type Object] (object)
+25: valueOf!
+Invalid Date
+NaN
+Testing: (56) [type Object] (object)
+26: valueOf!
+Invalid Date
+NaN
+Testing: (57) [type Object] (object)
+27: valueOf!
+Invalid Date
+NaN
+Testing: (58) [type Object] (object)
+28: valueOf!
+Invalid Date
+NaN
+Testing: (59) [type Object] (object)
+29: valueOf!
+Invalid Date
+NaN
diff --git a/test/trace/date-set-time.as b/test/trace/date-set-time.as
new file mode 100644
index 0000000..17c819e
--- /dev/null
+++ b/test/trace/date-set-time.as
@@ -0,0 +1,43 @@
+// makeswf -v 7 -s 200x150 -r 15 -o date-set-time-7.swf date-set-time.as
+
+#include "values.as"
+
+trace ("Go");
+
+var d = new Date (2000, 8, 3);
+trace (d.setTime ());
+trace (d);
+trace (d.valueOf ());
+
+trace (d.setTime (123, 12345));
+trace (d);
+trace (d.valueOf ());
+
+trace (d.setTime (123124.4));
+trace (d.valueOf ());
+
+d.setTime (123124.5);
+trace (d.valueOf ());
+
+d.setTime (123124.6);
+trace (d.valueOf ());
+
+d.setTime (-123124.4);
+trace (d.valueOf ());
+
+d.setTime (-123124.5);
+trace (d.valueOf ());
+
+d.setTime (-123124.6);
+trace (d.valueOf ());
+
+for (var i = 0; i < values.length; i++) {
+  trace ("Testing: " + names[i]);
+  delete d;
+  var d = new Date ();
+  d.setTime (values[i]);
+  trace (d);
+  trace (d.valueOf ());
+}
+
+getURL ("fscommand:quit");
commit 7fc8feec42a4de634448a47e652c4b96990a24dd
Author: Pekka Lampila <pekka.lampila at iki.fi>
Date:   Tue Jul 29 16:01:36 2008 +0300

    Make Date.setTime work correctly in some corner cases

diff --git a/swfdec/swfdec_as_date.c b/swfdec/swfdec_as_date.c
index d4b21a0..7275314 100644
--- a/swfdec/swfdec_as_date.c
+++ b/swfdec/swfdec_as_date.c
@@ -758,12 +758,20 @@ swfdec_as_date_setTime (SwfdecAsContext *cx, SwfdecAsObject *object,
     guint argc, SwfdecAsValue *argv, SwfdecAsValue *ret)
 {
   SwfdecAsDate *date;
+  double d;
 
   SWFDEC_AS_CHECK (SWFDEC_TYPE_AS_DATE, &date, "");
 
-  if (argc > 0) {
-    swfdec_as_date_set_milliseconds_utc (date,
-	trunc (swfdec_as_value_to_number (cx, &argv[0])));
+  if (argc > 0 &&
+      (cx->version > 6 || !SWFDEC_AS_VALUE_IS_UNDEFINED (&argv[0]))) {
+    d = swfdec_as_value_to_number (cx, &argv[0]);
+  } else {
+    d = NAN;
+  }
+  if (isfinite (d)) {
+    swfdec_as_date_set_milliseconds_utc (date, trunc (d));
+  } else {
+    swfdec_as_date_set_milliseconds_utc (date, NAN);
   }
 
   SWFDEC_AS_VALUE_SET_NUMBER (ret, date->milliseconds);
commit 26eaa40f7fd346fa4d6388a932d9b78bd7fdfbe9
Author: Pekka Lampila <pekka.lampila at iki.fi>
Date:   Tue Jul 29 15:48:43 2008 +0300

    Expand date-constructor test to catch bugs recently fixed
    
    One value is not tested currently, because the constructor doesn't handle huge
    numbers correctly at the moment

diff --git a/test/trace/date-constructor-5.swf b/test/trace/date-constructor-5.swf
index ba5d8dc..93d61fd 100644
Binary files a/test/trace/date-constructor-5.swf and b/test/trace/date-constructor-5.swf differ
diff --git a/test/trace/date-constructor-5.swf.trace b/test/trace/date-constructor-5.swf.trace
index 6dc8eee..86b2baa 100644
--- a/test/trace/date-constructor-5.swf.trace
+++ b/test/trace/date-constructor-5.swf.trace
@@ -1,6 +1,339 @@
+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!
+26: valueOf!
+26: toString!
+27: valueOf!
+27: toString!
+28: valueOf!
+28: toString!
+29: valueOf!
+29: toString!
 Mon Oct 28 21:24:04 GMT+0000 2002
 Mon Oct 28 21:24:04 GMT+0000 2002
 Mon Oct 28 21:24:04 GMT+0000 2002
 Fri Dec 9 00:00:00 GMT+0000 1983
 Mon Oct 28 21:24:04 GMT+0000 2002
 Fri Dec 9 22:43:54 GMT+0000 1983
+Testing: (0)  (undefined)
+Thu Dec 1 00:00:00 GMT+0000 1983
+439084800000
+Testing: (1) null (null)
+Wed Nov 30 22:43:00 GMT+0000 1983
+439080180089
+Testing: (2) true (boolean)
+Thu Dec 1 22:43:01 GMT+0000 1983
+439166581089
+Testing: (3) false (boolean)
+Wed Nov 30 22:43:00 GMT+0000 1983
+439080180089
+Testing: (4) 0 (number)
+Wed Nov 30 22:43:00 GMT+0000 1983
+439080180089
+Testing: (5) 1 (number)
+Thu Dec 1 22:43:01 GMT+0000 1983
+439166581089
+Testing: (6) 0.5 (number)
+Wed Nov 30 22:43:00 GMT+0000 1983
+439080180089
+Testing: (7) -1 (number)
+Tue Nov 29 22:42:59 GMT+0000 1983
+438993779089
+Testing: (8) -0.5 (number)
+Wed Nov 30 22:43:00 GMT+0000 1983
+439080180089
+Testing: (9) Infinity (number)
+Sun Jan 1 00:00:00 GMT+0000 1970
+Infinity
+Testing: (10) -Infinity (number)
+Sun Jan 1 00:00:00 GMT+0000 1970
+-Infinity
+Testing: (11) NaN (number)
+Invalid Date
+NaN
+Testing: (12)  (string)
+Invalid Date
+NaN
+Testing: (13) 0 (string)
+Wed Nov 30 22:43:00 GMT+0000 1983
+439080180089
+Testing: (14) -0 (string)
+Wed Nov 30 22:43:00 GMT+0000 1983
+439080180089
+Testing: (15) 0.0 (string)
+Wed Nov 30 22:43:00 GMT+0000 1983
+439080180089
+Testing: (16) 1 (string)
+Thu Dec 1 22:43:01 GMT+0000 1983
+439166581089
+Testing: (17) Hello World! (string)
+Invalid Date
+NaN
+Testing: (18) true (string)
+Invalid Date
+NaN
+Testing: (19) _level0 (string)
+Invalid Date
+NaN
+Testing: (20) äöü (string)
+Invalid Date
+NaN
+Testing: (21) _level0 (movieclip)
+Invalid Date
+NaN
+Testing: (22) [object Object] (object)
+Invalid Date
+NaN
+Skipping: (23) 1239752134235.94 (object)
+Testing: (24)  (object)
+Invalid Date
+NaN
+Testing: (25)  (undefined)
+Thu Dec 1 00:00:00 GMT+0000 1983
+439084800000
+valueOf called
+Testing: (26) [type Object] (object)
+valueOf called
+valueOf called
+Invalid Date
+NaN
+Testing: (27) [type Object] (object)
+Invalid Date
+NaN
+valueOf called with 
+Testing: (28) [object Object] (object)
+valueOf called with 
+valueOf called with 
+Invalid Date
+NaN
+Testing: (29)  (object)
+Wed Nov 30 22:43:00 GMT+0000 1983
+439080180089
+0: valueOf!
+0: valueOf!
+Testing: (30)  (object)
+0: valueOf!
+0: valueOf!
+Wed Nov 30 22:43:00 GMT+0000 1983
+439080180089
+1: valueOf!
+1: valueOf!
+Testing: (31) null (object)
+1: valueOf!
+1: valueOf!
+Wed Nov 30 22:43:00 GMT+0000 1983
+439080180089
+2: valueOf!
+2: valueOf!
+Testing: (32) true (object)
+2: valueOf!
+2: valueOf!
+Thu Dec 1 22:43:01 GMT+0000 1983
+439166581089
+3: valueOf!
+3: valueOf!
+Testing: (33) false (object)
+3: valueOf!
+3: valueOf!
+Wed Nov 30 22:43:00 GMT+0000 1983
+439080180089
+4: valueOf!
+4: valueOf!
+Testing: (34) 0 (object)
+4: valueOf!
+4: valueOf!
+Wed Nov 30 22:43:00 GMT+0000 1983
+439080180089
+5: valueOf!
+5: valueOf!
+Testing: (35) 1 (object)
+5: valueOf!
+5: valueOf!
+Thu Dec 1 22:43:01 GMT+0000 1983
+439166581089
+6: valueOf!
+6: valueOf!
+Testing: (36) 0.5 (object)
+6: valueOf!
+6: valueOf!
+Wed Nov 30 22:43:00 GMT+0000 1983
+439080180089
+7: valueOf!
+7: valueOf!
+Testing: (37) -1 (object)
+7: valueOf!
+7: valueOf!
+Tue Nov 29 22:42:59 GMT+0000 1983
+438993779089
+8: valueOf!
+8: valueOf!
+Testing: (38) -0.5 (object)
+8: valueOf!
+8: valueOf!
+Wed Nov 30 22:43:00 GMT+0000 1983
+439080180089
+9: valueOf!
+Testing: (39) Infinity (object)
+9: valueOf!
+9: valueOf!
+Sun Jan 1 00:00:00 GMT+0000 1970
+Infinity
+10: valueOf!
+Testing: (40) -Infinity (object)
+10: valueOf!
+10: valueOf!
+Sun Jan 1 00:00:00 GMT+0000 1970
+-Infinity
+11: valueOf!
+Testing: (41) NaN (object)
+11: valueOf!
+11: valueOf!
+Invalid Date
+NaN
+12: valueOf!
+Testing: (42)  (object)
+12: valueOf!
+12: valueOf!
+Invalid Date
+NaN
+13: valueOf!
+13: valueOf!
+Testing: (43) 0 (object)
+13: valueOf!
+13: valueOf!
+Wed Nov 30 22:43:00 GMT+0000 1983
+439080180089
+14: valueOf!
+14: valueOf!
+Testing: (44) -0 (object)
+14: valueOf!
+14: valueOf!
+Wed Nov 30 22:43:00 GMT+0000 1983
+439080180089
+15: valueOf!
+15: valueOf!
+Testing: (45) 0.0 (object)
+15: valueOf!
+15: valueOf!
+Wed Nov 30 22:43:00 GMT+0000 1983
+439080180089
+16: valueOf!
+16: valueOf!
+Testing: (46) 1 (object)
+16: valueOf!
+16: valueOf!
+Thu Dec 1 22:43:01 GMT+0000 1983
+439166581089
+17: valueOf!
+Testing: (47) Hello World! (object)
+17: valueOf!
+17: valueOf!
+Invalid Date
+NaN
+18: valueOf!
+Testing: (48) true (object)
+18: valueOf!
+18: valueOf!
+Invalid Date
+NaN
+19: valueOf!
+Testing: (49) _level0 (object)
+19: valueOf!
+19: valueOf!
+Invalid Date
+NaN
+20: valueOf!
+Testing: (50) äöü (object)
+20: valueOf!
+20: valueOf!
+Invalid Date
+NaN
+21: valueOf!
+Testing: (51) _level0 (object)
+21: valueOf!
+21: valueOf!
+Invalid Date
+NaN
+22: valueOf!
+Testing: (52) [type Object] (object)
+22: valueOf!
+22: valueOf!
+Invalid Date
+NaN
+23: valueOf!
+Testing: (53) [type Object] (object)
+23: valueOf!
+23: valueOf!
+Invalid Date
+NaN
+24: valueOf!
+Testing: (54) [type Object] (object)
+24: valueOf!
+24: valueOf!
+Invalid Date
+NaN
+25: valueOf!
+25: valueOf!
+Testing: (55)  (object)
+25: valueOf!
+25: valueOf!
+Wed Nov 30 22:43:00 GMT+0000 1983
+439080180089
+26: valueOf!
+Testing: (56) [type Object] (object)
+26: valueOf!
+26: valueOf!
+Invalid Date
+NaN
+27: valueOf!
+Testing: (57) [type Object] (object)
+27: valueOf!
+27: valueOf!
+Invalid Date
+NaN
+28: valueOf!
+Testing: (58) [type Object] (object)
+28: valueOf!
+28: valueOf!
+Invalid Date
+NaN
+29: valueOf!
+Testing: (59) [type Object] (object)
+29: valueOf!
+29: valueOf!
+Invalid Date
+NaN
+Invalid Date
+Invalid Date
+Invalid Date
+Invalid Date
diff --git a/test/trace/date-constructor-6.swf b/test/trace/date-constructor-6.swf
index 198ba77..21dae81 100644
Binary files a/test/trace/date-constructor-6.swf and b/test/trace/date-constructor-6.swf differ
diff --git a/test/trace/date-constructor-6.swf.trace b/test/trace/date-constructor-6.swf.trace
index 6dc8eee..2c43622 100644
--- a/test/trace/date-constructor-6.swf.trace
+++ b/test/trace/date-constructor-6.swf.trace
@@ -1,6 +1,339 @@
+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!
+28: valueOf!
+28: toString!
+29: valueOf!
+29: toString!
 Mon Oct 28 21:24:04 GMT+0000 2002
 Mon Oct 28 21:24:04 GMT+0000 2002
 Mon Oct 28 21:24:04 GMT+0000 2002
 Fri Dec 9 00:00:00 GMT+0000 1983
 Mon Oct 28 21:24:04 GMT+0000 2002
 Fri Dec 9 22:43:54 GMT+0000 1983
+Testing: (0)  (undefined)
+Thu Dec 1 00:00:00 GMT+0000 1983
+439084800000
+Testing: (1) null (null)
+Wed Nov 30 22:43:00 GMT+0000 1983
+439080180089
+Testing: (2) true (boolean)
+Thu Dec 1 22:43:01 GMT+0000 1983
+439166581089
+Testing: (3) false (boolean)
+Wed Nov 30 22:43:00 GMT+0000 1983
+439080180089
+Testing: (4) 0 (number)
+Wed Nov 30 22:43:00 GMT+0000 1983
+439080180089
+Testing: (5) 1 (number)
+Thu Dec 1 22:43:01 GMT+0000 1983
+439166581089
+Testing: (6) 0.5 (number)
+Wed Nov 30 22:43:00 GMT+0000 1983
+439080180089
+Testing: (7) -1 (number)
+Tue Nov 29 22:42:59 GMT+0000 1983
+438993779089
+Testing: (8) -0.5 (number)
+Wed Nov 30 22:43:00 GMT+0000 1983
+439080180089
+Testing: (9) Infinity (number)
+Sun Jan 1 00:00:00 GMT+0000 1970
+Infinity
+Testing: (10) -Infinity (number)
+Sun Jan 1 00:00:00 GMT+0000 1970
+-Infinity
+Testing: (11) NaN (number)
+Invalid Date
+NaN
+Testing: (12)  (string)
+Invalid Date
+NaN
+Testing: (13) 0 (string)
+Wed Nov 30 22:43:00 GMT+0000 1983
+439080180089
+Testing: (14) -0 (string)
+Wed Nov 30 22:43:00 GMT+0000 1983
+439080180089
+Testing: (15) 0.0 (string)
+Wed Nov 30 22:43:00 GMT+0000 1983
+439080180089
+Testing: (16) 1 (string)
+Thu Dec 1 22:43:01 GMT+0000 1983
+439166581089
+Testing: (17) Hello World! (string)
+Invalid Date
+NaN
+Testing: (18) true (string)
+Invalid Date
+NaN
+Testing: (19) _level0 (string)
+Invalid Date
+NaN
+Testing: (20) äöü (string)
+Invalid Date
+NaN
+Testing: (21) _level0 (movieclip)
+Invalid Date
+NaN
+Testing: (22) [object Object] (object)
+Invalid Date
+NaN
+Skipping: (23) Tue Apr 14 23:35:34 GMT+0000 2009 (object)
+Testing: (24)  (object)
+Invalid Date
+NaN
+Testing: (25) [type Function] (function)
+Invalid Date
+NaN
+valueOf called
+Testing: (26) [type Object] (object)
+valueOf called
+valueOf called
+Invalid Date
+NaN
+Testing: (27) [type Object] (object)
+Invalid Date
+NaN
+valueOf called with 
+Testing: (28) [object Object] (object)
+valueOf called with 
+valueOf called with 
+Invalid Date
+NaN
+Testing: (29)  (object)
+Wed Nov 30 22:43:00 GMT+0000 1983
+439080180089
+0: valueOf!
+0: valueOf!
+Testing: (30)  (object)
+0: valueOf!
+0: valueOf!
+Wed Nov 30 22:43:00 GMT+0000 1983
+439080180089
+1: valueOf!
+1: valueOf!
+Testing: (31) null (object)
+1: valueOf!
+1: valueOf!
+Wed Nov 30 22:43:00 GMT+0000 1983
+439080180089
+2: valueOf!
+2: valueOf!
+Testing: (32) true (object)
+2: valueOf!
+2: valueOf!
+Thu Dec 1 22:43:01 GMT+0000 1983
+439166581089
+3: valueOf!
+3: valueOf!
+Testing: (33) false (object)
+3: valueOf!
+3: valueOf!
+Wed Nov 30 22:43:00 GMT+0000 1983
+439080180089
+4: valueOf!
+4: valueOf!
+Testing: (34) 0 (object)
+4: valueOf!
+4: valueOf!
+Wed Nov 30 22:43:00 GMT+0000 1983
+439080180089
+5: valueOf!
+5: valueOf!
+Testing: (35) 1 (object)
+5: valueOf!
+5: valueOf!
+Thu Dec 1 22:43:01 GMT+0000 1983
+439166581089
+6: valueOf!
+6: valueOf!
+Testing: (36) 0.5 (object)
+6: valueOf!
+6: valueOf!
+Wed Nov 30 22:43:00 GMT+0000 1983
+439080180089
+7: valueOf!
+7: valueOf!
+Testing: (37) -1 (object)
+7: valueOf!
+7: valueOf!
+Tue Nov 29 22:42:59 GMT+0000 1983
+438993779089
+8: valueOf!
+8: valueOf!
+Testing: (38) -0.5 (object)
+8: valueOf!
+8: valueOf!
+Wed Nov 30 22:43:00 GMT+0000 1983
+439080180089
+9: valueOf!
+Testing: (39) Infinity (object)
+9: valueOf!
+9: valueOf!
+Sun Jan 1 00:00:00 GMT+0000 1970
+Infinity
+10: valueOf!
+Testing: (40) -Infinity (object)
+10: valueOf!
+10: valueOf!
+Sun Jan 1 00:00:00 GMT+0000 1970
+-Infinity
+11: valueOf!
+Testing: (41) NaN (object)
+11: valueOf!
+11: valueOf!
+Invalid Date
+NaN
+12: valueOf!
+Testing: (42)  (object)
+12: valueOf!
+12: valueOf!
+Invalid Date
+NaN
+13: valueOf!
+13: valueOf!
+Testing: (43) 0 (object)
+13: valueOf!
+13: valueOf!
+Wed Nov 30 22:43:00 GMT+0000 1983
+439080180089
+14: valueOf!
+14: valueOf!
+Testing: (44) -0 (object)
+14: valueOf!
+14: valueOf!
+Wed Nov 30 22:43:00 GMT+0000 1983
+439080180089
+15: valueOf!
+15: valueOf!
+Testing: (45) 0.0 (object)
+15: valueOf!
+15: valueOf!
+Wed Nov 30 22:43:00 GMT+0000 1983
+439080180089
+16: valueOf!
+16: valueOf!
+Testing: (46) 1 (object)
+16: valueOf!
+16: valueOf!
+Thu Dec 1 22:43:01 GMT+0000 1983
+439166581089
+17: valueOf!
+Testing: (47) Hello World! (object)
+17: valueOf!
+17: valueOf!
+Invalid Date
+NaN
+18: valueOf!
+Testing: (48) true (object)
+18: valueOf!
+18: valueOf!
+Invalid Date
+NaN
+19: valueOf!
+Testing: (49) _level0 (object)
+19: valueOf!
+19: valueOf!
+Invalid Date
+NaN
+20: valueOf!
+Testing: (50) äöü (object)
+20: valueOf!
+20: valueOf!
+Invalid Date
+NaN
+21: valueOf!
+Testing: (51) _level0 (object)
+21: valueOf!
+21: valueOf!
+Invalid Date
+NaN
+22: valueOf!
+Testing: (52) [type Object] (object)
+22: valueOf!
+22: valueOf!
+Invalid Date
+NaN
+23: valueOf!
+Testing: (53) [type Object] (object)
+23: valueOf!
+23: valueOf!
+Invalid Date
+NaN
+24: valueOf!
+Testing: (54) [type Object] (object)
+24: valueOf!
+24: valueOf!
+Invalid Date
+NaN
+25: valueOf!
+Testing: (55) [type Object] (object)
+25: valueOf!
+25: valueOf!
+Invalid Date
+NaN
+26: valueOf!
+Testing: (56) [type Object] (object)
+26: valueOf!
+26: valueOf!
+Invalid Date
+NaN
+27: valueOf!
+Testing: (57) [type Object] (object)
+27: valueOf!
+27: valueOf!
+Invalid Date
+NaN
+28: valueOf!
+Testing: (58) [type Object] (object)
+28: valueOf!
+28: valueOf!
+Invalid Date
+NaN
+29: valueOf!
+Testing: (59) [type Object] (object)
+29: valueOf!
+29: valueOf!
+Invalid Date
+NaN
+Invalid Date
+Invalid Date
+Invalid Date
+Invalid Date
diff --git a/test/trace/date-constructor-7.swf b/test/trace/date-constructor-7.swf
index ece6a88..9cf3c82 100644
Binary files a/test/trace/date-constructor-7.swf and b/test/trace/date-constructor-7.swf differ
diff --git a/test/trace/date-constructor-7.swf.trace b/test/trace/date-constructor-7.swf.trace
index 6dc8eee..0dba374 100644
--- a/test/trace/date-constructor-7.swf.trace
+++ b/test/trace/date-constructor-7.swf.trace
@@ -1,6 +1,337 @@
+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!
+28: valueOf!
+28: toString!
+29: valueOf!
+29: toString!
 Mon Oct 28 21:24:04 GMT+0000 2002
 Mon Oct 28 21:24:04 GMT+0000 2002
 Mon Oct 28 21:24:04 GMT+0000 2002
 Fri Dec 9 00:00:00 GMT+0000 1983
 Mon Oct 28 21:24:04 GMT+0000 2002
 Fri Dec 9 22:43:54 GMT+0000 1983
+Testing: (0) undefined (undefined)
+Thu Dec 1 00:00:00 GMT+0000 1983
+439084800000
+Testing: (1) null (null)
+Invalid Date
+NaN
+Testing: (2) true (boolean)
+Thu Dec 1 22:43:01 GMT+0000 1983
+439166581089
+Testing: (3) false (boolean)
+Wed Nov 30 22:43:00 GMT+0000 1983
+439080180089
+Testing: (4) 0 (number)
+Wed Nov 30 22:43:00 GMT+0000 1983
+439080180089
+Testing: (5) 1 (number)
+Thu Dec 1 22:43:01 GMT+0000 1983
+439166581089
+Testing: (6) 0.5 (number)
+Wed Nov 30 22:43:00 GMT+0000 1983
+439080180089
+Testing: (7) -1 (number)
+Tue Nov 29 22:42:59 GMT+0000 1983
+438993779089
+Testing: (8) -0.5 (number)
+Wed Nov 30 22:43:00 GMT+0000 1983
+439080180089
+Testing: (9) Infinity (number)
+Sun Jan 1 00:00:00 GMT+0000 1970
+Infinity
+Testing: (10) -Infinity (number)
+Sun Jan 1 00:00:00 GMT+0000 1970
+-Infinity
+Testing: (11) NaN (number)
+Invalid Date
+NaN
+Testing: (12)  (string)
+Invalid Date
+NaN
+Testing: (13) 0 (string)
+Wed Nov 30 22:43:00 GMT+0000 1983
+439080180089
+Testing: (14) -0 (string)
+Wed Nov 30 22:43:00 GMT+0000 1983
+439080180089
+Testing: (15) 0.0 (string)
+Wed Nov 30 22:43:00 GMT+0000 1983
+439080180089
+Testing: (16) 1 (string)
+Thu Dec 1 22:43:01 GMT+0000 1983
+439166581089
+Testing: (17) Hello World! (string)
+Invalid Date
+NaN
+Testing: (18) true (string)
+Invalid Date
+NaN
+Testing: (19) _level0 (string)
+Invalid Date
+NaN
+Testing: (20) äöü (string)
+Invalid Date
+NaN
+Testing: (21) _level0 (movieclip)
+Invalid Date
+NaN
+Testing: (22) [object Object] (object)
+Invalid Date
+NaN
+Skipping: (23) Tue Apr 14 23:35:34 GMT+0000 2009 (object)
+Testing: (24)  (object)
+Invalid Date
+NaN
+Testing: (25) [type Function] (function)
+Invalid Date
+NaN
+valueOf called
+Testing: (26) [type Object] (object)
+valueOf called
+valueOf called
+Invalid Date
+NaN
+Testing: (27) [type Object] (object)
+Invalid Date
+NaN
+valueOf called with 
+Testing: (28) [object Object] (object)
+valueOf called with 
+valueOf called with 
+Invalid Date
+NaN
+Testing: (29) undefined (object)
+Invalid Date
+NaN
+0: valueOf!
+Testing: (30) undefined (object)
+0: valueOf!
+0: valueOf!
+Invalid Date
+NaN
+1: valueOf!
+Testing: (31) null (object)
+1: valueOf!
+1: valueOf!
+Invalid Date
+NaN
+2: valueOf!
+2: valueOf!
+Testing: (32) true (object)
+2: valueOf!
+2: valueOf!
+Thu Dec 1 22:43:01 GMT+0000 1983
+439166581089
+3: valueOf!
+3: valueOf!
+Testing: (33) false (object)
+3: valueOf!
+3: valueOf!
+Wed Nov 30 22:43:00 GMT+0000 1983
+439080180089
+4: valueOf!
+4: valueOf!
+Testing: (34) 0 (object)
+4: valueOf!
+4: valueOf!
+Wed Nov 30 22:43:00 GMT+0000 1983
+439080180089
+5: valueOf!
+5: valueOf!
+Testing: (35) 1 (object)
+5: valueOf!
+5: valueOf!
+Thu Dec 1 22:43:01 GMT+0000 1983
+439166581089
+6: valueOf!
+6: valueOf!
+Testing: (36) 0.5 (object)
+6: valueOf!
+6: valueOf!
+Wed Nov 30 22:43:00 GMT+0000 1983
+439080180089
+7: valueOf!
+7: valueOf!
+Testing: (37) -1 (object)
+7: valueOf!
+7: valueOf!
+Tue Nov 29 22:42:59 GMT+0000 1983
+438993779089
+8: valueOf!
+8: valueOf!
+Testing: (38) -0.5 (object)
+8: valueOf!
+8: valueOf!
+Wed Nov 30 22:43:00 GMT+0000 1983
+439080180089
+9: valueOf!
+Testing: (39) Infinity (object)
+9: valueOf!
+9: valueOf!
+Sun Jan 1 00:00:00 GMT+0000 1970
+Infinity
+10: valueOf!
+Testing: (40) -Infinity (object)
+10: valueOf!
+10: valueOf!
+Sun Jan 1 00:00:00 GMT+0000 1970
+-Infinity
+11: valueOf!
+Testing: (41) NaN (object)
+11: valueOf!
+11: valueOf!
+Invalid Date
+NaN
+12: valueOf!
+Testing: (42)  (object)
+12: valueOf!
+12: valueOf!
+Invalid Date
+NaN
+13: valueOf!
+13: valueOf!
+Testing: (43) 0 (object)
+13: valueOf!
+13: valueOf!
+Wed Nov 30 22:43:00 GMT+0000 1983
+439080180089
+14: valueOf!
+14: valueOf!
+Testing: (44) -0 (object)
+14: valueOf!
+14: valueOf!
+Wed Nov 30 22:43:00 GMT+0000 1983
+439080180089
+15: valueOf!
+15: valueOf!
+Testing: (45) 0.0 (object)
+15: valueOf!
+15: valueOf!
+Wed Nov 30 22:43:00 GMT+0000 1983
+439080180089
+16: valueOf!
+16: valueOf!
+Testing: (46) 1 (object)
+16: valueOf!
+16: valueOf!
+Thu Dec 1 22:43:01 GMT+0000 1983
+439166581089
+17: valueOf!
+Testing: (47) Hello World! (object)
+17: valueOf!
+17: valueOf!
+Invalid Date
+NaN
+18: valueOf!
+Testing: (48) true (object)
+18: valueOf!
+18: valueOf!
+Invalid Date
+NaN
+19: valueOf!
+Testing: (49) _level0 (object)
+19: valueOf!
+19: valueOf!
+Invalid Date
+NaN
+20: valueOf!
+Testing: (50) äöü (object)
+20: valueOf!
+20: valueOf!
+Invalid Date
+NaN
+21: valueOf!
+Testing: (51) _level0 (object)
+21: valueOf!
+21: valueOf!
+Invalid Date
+NaN
+22: valueOf!
+Testing: (52) [type Object] (object)
+22: valueOf!
+22: valueOf!
+Invalid Date
+NaN
+23: valueOf!
+Testing: (53) [type Object] (object)
+23: valueOf!
+23: valueOf!
+Invalid Date
+NaN
+24: valueOf!
+Testing: (54) [type Object] (object)
+24: valueOf!
+24: valueOf!
+Invalid Date
+NaN
+25: valueOf!
+Testing: (55) [type Object] (object)
+25: valueOf!
+25: valueOf!
+Invalid Date
+NaN
+26: valueOf!
+Testing: (56) [type Object] (object)
+26: valueOf!
+26: valueOf!
+Invalid Date
+NaN
+27: valueOf!
+Testing: (57) [type Object] (object)
+27: valueOf!
+27: valueOf!
+Invalid Date
+NaN
+28: valueOf!
+Testing: (58) [type Object] (object)
+28: valueOf!
+28: valueOf!
+Invalid Date
+NaN
+29: valueOf!
+Testing: (59) [type Object] (object)
+29: valueOf!
+29: valueOf!
+Invalid Date
+NaN
+Invalid Date
+Invalid Date
+Invalid Date
+Invalid Date
diff --git a/test/trace/date-constructor-8.swf b/test/trace/date-constructor-8.swf
index 64d252e..7a10a1f 100644
Binary files a/test/trace/date-constructor-8.swf and b/test/trace/date-constructor-8.swf differ
diff --git a/test/trace/date-constructor-8.swf.trace b/test/trace/date-constructor-8.swf.trace
index 6dc8eee..0dba374 100644
--- a/test/trace/date-constructor-8.swf.trace
+++ b/test/trace/date-constructor-8.swf.trace
@@ -1,6 +1,337 @@
+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!
+28: valueOf!
+28: toString!
+29: valueOf!
+29: toString!
 Mon Oct 28 21:24:04 GMT+0000 2002
 Mon Oct 28 21:24:04 GMT+0000 2002
 Mon Oct 28 21:24:04 GMT+0000 2002
 Fri Dec 9 00:00:00 GMT+0000 1983
 Mon Oct 28 21:24:04 GMT+0000 2002
 Fri Dec 9 22:43:54 GMT+0000 1983
+Testing: (0) undefined (undefined)
+Thu Dec 1 00:00:00 GMT+0000 1983
+439084800000
+Testing: (1) null (null)
+Invalid Date
+NaN
+Testing: (2) true (boolean)
+Thu Dec 1 22:43:01 GMT+0000 1983
+439166581089
+Testing: (3) false (boolean)
+Wed Nov 30 22:43:00 GMT+0000 1983
+439080180089
+Testing: (4) 0 (number)
+Wed Nov 30 22:43:00 GMT+0000 1983
+439080180089
+Testing: (5) 1 (number)
+Thu Dec 1 22:43:01 GMT+0000 1983
+439166581089
+Testing: (6) 0.5 (number)
+Wed Nov 30 22:43:00 GMT+0000 1983
+439080180089
+Testing: (7) -1 (number)
+Tue Nov 29 22:42:59 GMT+0000 1983
+438993779089
+Testing: (8) -0.5 (number)
+Wed Nov 30 22:43:00 GMT+0000 1983
+439080180089
+Testing: (9) Infinity (number)
+Sun Jan 1 00:00:00 GMT+0000 1970
+Infinity
+Testing: (10) -Infinity (number)
+Sun Jan 1 00:00:00 GMT+0000 1970
+-Infinity
+Testing: (11) NaN (number)
+Invalid Date
+NaN
+Testing: (12)  (string)
+Invalid Date
+NaN
+Testing: (13) 0 (string)
+Wed Nov 30 22:43:00 GMT+0000 1983
+439080180089
+Testing: (14) -0 (string)
+Wed Nov 30 22:43:00 GMT+0000 1983
+439080180089
+Testing: (15) 0.0 (string)
+Wed Nov 30 22:43:00 GMT+0000 1983
+439080180089
+Testing: (16) 1 (string)
+Thu Dec 1 22:43:01 GMT+0000 1983
+439166581089
+Testing: (17) Hello World! (string)
+Invalid Date
+NaN
+Testing: (18) true (string)
+Invalid Date
+NaN
+Testing: (19) _level0 (string)
+Invalid Date
+NaN
+Testing: (20) äöü (string)
+Invalid Date
+NaN
+Testing: (21) _level0 (movieclip)
+Invalid Date
+NaN
+Testing: (22) [object Object] (object)
+Invalid Date
+NaN
+Skipping: (23) Tue Apr 14 23:35:34 GMT+0000 2009 (object)
+Testing: (24)  (object)
+Invalid Date
+NaN
+Testing: (25) [type Function] (function)
+Invalid Date
+NaN
+valueOf called
+Testing: (26) [type Object] (object)
+valueOf called
+valueOf called
+Invalid Date
+NaN
+Testing: (27) [type Object] (object)
+Invalid Date
+NaN
+valueOf called with 
+Testing: (28) [object Object] (object)
+valueOf called with 
+valueOf called with 
+Invalid Date
+NaN
+Testing: (29) undefined (object)
+Invalid Date
+NaN
+0: valueOf!
+Testing: (30) undefined (object)
+0: valueOf!
+0: valueOf!
+Invalid Date
+NaN
+1: valueOf!
+Testing: (31) null (object)
+1: valueOf!
+1: valueOf!
+Invalid Date
+NaN
+2: valueOf!
+2: valueOf!
+Testing: (32) true (object)
+2: valueOf!
+2: valueOf!
+Thu Dec 1 22:43:01 GMT+0000 1983
+439166581089
+3: valueOf!
+3: valueOf!
+Testing: (33) false (object)
+3: valueOf!
+3: valueOf!
+Wed Nov 30 22:43:00 GMT+0000 1983
+439080180089
+4: valueOf!
+4: valueOf!
+Testing: (34) 0 (object)
+4: valueOf!
+4: valueOf!
+Wed Nov 30 22:43:00 GMT+0000 1983
+439080180089
+5: valueOf!
+5: valueOf!
+Testing: (35) 1 (object)
+5: valueOf!
+5: valueOf!
+Thu Dec 1 22:43:01 GMT+0000 1983
+439166581089
+6: valueOf!
+6: valueOf!
+Testing: (36) 0.5 (object)
+6: valueOf!
+6: valueOf!
+Wed Nov 30 22:43:00 GMT+0000 1983
+439080180089
+7: valueOf!
+7: valueOf!
+Testing: (37) -1 (object)
+7: valueOf!
+7: valueOf!
+Tue Nov 29 22:42:59 GMT+0000 1983
+438993779089
+8: valueOf!
+8: valueOf!
+Testing: (38) -0.5 (object)
+8: valueOf!
+8: valueOf!
+Wed Nov 30 22:43:00 GMT+0000 1983
+439080180089
+9: valueOf!
+Testing: (39) Infinity (object)
+9: valueOf!
+9: valueOf!
+Sun Jan 1 00:00:00 GMT+0000 1970
+Infinity
+10: valueOf!
+Testing: (40) -Infinity (object)
+10: valueOf!
+10: valueOf!
+Sun Jan 1 00:00:00 GMT+0000 1970
+-Infinity
+11: valueOf!
+Testing: (41) NaN (object)
+11: valueOf!
+11: valueOf!
+Invalid Date
+NaN
+12: valueOf!
+Testing: (42)  (object)
+12: valueOf!
+12: valueOf!
+Invalid Date
+NaN
+13: valueOf!
+13: valueOf!
+Testing: (43) 0 (object)
+13: valueOf!
+13: valueOf!
+Wed Nov 30 22:43:00 GMT+0000 1983
+439080180089
+14: valueOf!
+14: valueOf!
+Testing: (44) -0 (object)
+14: valueOf!
+14: valueOf!
+Wed Nov 30 22:43:00 GMT+0000 1983
+439080180089
+15: valueOf!
+15: valueOf!
+Testing: (45) 0.0 (object)
+15: valueOf!
+15: valueOf!
+Wed Nov 30 22:43:00 GMT+0000 1983
+439080180089
+16: valueOf!
+16: valueOf!
+Testing: (46) 1 (object)
+16: valueOf!
+16: valueOf!
+Thu Dec 1 22:43:01 GMT+0000 1983
+439166581089
+17: valueOf!
+Testing: (47) Hello World! (object)
+17: valueOf!
+17: valueOf!
+Invalid Date
+NaN
+18: valueOf!
+Testing: (48) true (object)
+18: valueOf!
+18: valueOf!
+Invalid Date
+NaN
+19: valueOf!
+Testing: (49) _level0 (object)
+19: valueOf!
+19: valueOf!
+Invalid Date
+NaN
+20: valueOf!
+Testing: (50) äöü (object)
+20: valueOf!
+20: valueOf!
+Invalid Date
+NaN
+21: valueOf!
+Testing: (51) _level0 (object)
+21: valueOf!
+21: valueOf!
+Invalid Date
+NaN
+22: valueOf!
+Testing: (52) [type Object] (object)
+22: valueOf!
+22: valueOf!
+Invalid Date
+NaN
+23: valueOf!
+Testing: (53) [type Object] (object)
+23: valueOf!
+23: valueOf!
+Invalid Date
+NaN
+24: valueOf!
+Testing: (54) [type Object] (object)
+24: valueOf!
+24: valueOf!
+Invalid Date
+NaN
+25: valueOf!
+Testing: (55) [type Object] (object)
+25: valueOf!
+25: valueOf!
+Invalid Date
+NaN
+26: valueOf!
+Testing: (56) [type Object] (object)
+26: valueOf!
+26: valueOf!
+Invalid Date
+NaN
+27: valueOf!
+Testing: (57) [type Object] (object)
+27: valueOf!
+27: valueOf!
+Invalid Date
+NaN
+28: valueOf!
+Testing: (58) [type Object] (object)
+28: valueOf!
+28: valueOf!
+Invalid Date
+NaN
+29: valueOf!
+Testing: (59) [type Object] (object)
+29: valueOf!
+29: valueOf!
+Invalid Date
+NaN
+Invalid Date
+Invalid Date
+Invalid Date
+Invalid Date
diff --git a/test/trace/date-constructor.as b/test/trace/date-constructor.as
index f6dad63..72c128b 100644
--- a/test/trace/date-constructor.as
+++ b/test/trace/date-constructor.as
@@ -1,5 +1,7 @@
 // makeswf -v 7 -r 1 -o date-constructor-7.swf date-constructor.as
 
+#include "values.as"
+
 trace (Date ());
 trace (new Date ());
 
@@ -9,4 +11,21 @@ trace (new Date (1983, 11, 9));
 trace (Date (1983, 11, 9, 22, 43, 54, 89));
 trace (new Date (1983, 11, 9, 22, 43, 54, 89));
 
-loadMovie ("FSCommand:quit", "");
+for (var i = 0; i < values.length; i++) {
+  // FIXME: Swfdec bug
+  if (isFinite (values[i]) && values[i] > 1 << 32) {
+    trace ("Skipping: " + names[i]);
+    continue;
+  }
+  trace ("Testing: " + names[i]);
+  var d = new Date (1983, 11, values[i], 22, 43, values[i], 89);
+  trace (d);
+  trace (d.valueOf ());
+}
+
+trace (new Date (1983, 11, Infinity, -Infinity, 43, 54, 89));
+trace (new Date (1983, 11, -Infinity, Infinity, 43, 54, 89));
+trace (new Date (1983, 11, Infinity, NaN, 43, 54, 89));
+trace (new Date (1983, 11, -Infinity, NaN, 43, 54, 89));
+
+getURL ("FSCommand:quit", "");
commit 6ce6493474587f608d3670519f4448572670e2db
Author: Pekka Lampila <pekka.lampila at iki.fi>
Date:   Tue Jul 29 15:05:38 2008 +0300

    Allow calling Date's set methods with multiple arguments to set multiple fields
    
    For example: setFullYear will take year, month and date arguments

diff --git a/swfdec/swfdec_as_date.c b/swfdec/swfdec_as_date.c
index b55823c..d4b21a0 100644
--- a/swfdec/swfdec_as_date.c
+++ b/swfdec/swfdec_as_date.c
@@ -793,6 +793,9 @@ swfdec_as_date_setSeconds (SwfdecAsContext *cx, SwfdecAsObject *object,
     guint argc, SwfdecAsValue *argv, SwfdecAsValue *ret)
 {
   swfdec_as_date_set_field (cx, object, argc, argv, ret, FIELD_SECONDS, FALSE);
+
+  if (argc > 1)
+    swfdec_as_date_setMilliseconds (cx, object, argc - 1, argv + 1, ret);
 }
 
 SWFDEC_AS_NATIVE (103, 128 + 14, swfdec_as_date_setUTCSeconds)
@@ -801,6 +804,9 @@ swfdec_as_date_setUTCSeconds (SwfdecAsContext *cx, SwfdecAsObject *object,
     guint argc, SwfdecAsValue *argv, SwfdecAsValue *ret)
 {
   swfdec_as_date_set_field (cx, object, argc, argv, ret, FIELD_SECONDS, TRUE);
+
+  if (argc > 1)
+    swfdec_as_date_setUTCMilliseconds (cx, object, argc - 1, argv + 1, ret);
 }
 
 SWFDEC_AS_NATIVE (103, 13, swfdec_as_date_setMinutes)
@@ -809,6 +815,9 @@ swfdec_as_date_setMinutes (SwfdecAsContext *cx, SwfdecAsObject *object,
     guint argc, SwfdecAsValue *argv, SwfdecAsValue *ret)
 {
   swfdec_as_date_set_field (cx, object, argc, argv, ret, FIELD_MINUTES, FALSE);
+
+  if (argc > 1)
+    swfdec_as_date_setSeconds (cx, object, argc - 1, argv + 1, ret);
 }
 
 SWFDEC_AS_NATIVE (103, 128 + 13, swfdec_as_date_setUTCMinutes)
@@ -817,6 +826,9 @@ swfdec_as_date_setUTCMinutes (SwfdecAsContext *cx, SwfdecAsObject *object,
     guint argc, SwfdecAsValue *argv, SwfdecAsValue *ret)
 {
   swfdec_as_date_set_field (cx, object, argc, argv, ret, FIELD_MINUTES, TRUE);
+
+  if (argc > 1)
+    swfdec_as_date_setUTCSeconds (cx, object, argc - 1, argv + 1, ret);
 }
 
 SWFDEC_AS_NATIVE (103, 12, swfdec_as_date_setHours)
@@ -825,6 +837,9 @@ swfdec_as_date_setHours (SwfdecAsContext *cx, SwfdecAsObject *object,
     guint argc, SwfdecAsValue *argv, SwfdecAsValue *ret)
 {
   swfdec_as_date_set_field (cx, object, argc, argv, ret, FIELD_HOURS, FALSE);
+
+  if (argc > 1)
+    swfdec_as_date_setMinutes (cx, object, argc - 1, argv + 1, ret);
 }
 
 SWFDEC_AS_NATIVE (103, 128 + 12, swfdec_as_date_setUTCHours)
@@ -833,6 +848,9 @@ swfdec_as_date_setUTCHours (SwfdecAsContext *cx, SwfdecAsObject *object,
     guint argc, SwfdecAsValue *argv, SwfdecAsValue *ret)
 {
   swfdec_as_date_set_field (cx, object, argc, argv, ret, FIELD_HOURS, TRUE);
+
+  if (argc > 1)
+    swfdec_as_date_setUTCMinutes (cx, object, argc - 1, argv + 1, ret);
 }
 
 SWFDEC_AS_NATIVE (103, 11, swfdec_as_date_setDate)
@@ -859,6 +877,9 @@ swfdec_as_date_setMonth (SwfdecAsContext *cx, SwfdecAsObject *object,
     guint argc, SwfdecAsValue *argv, SwfdecAsValue *ret)
 {
   swfdec_as_date_set_field (cx, object, argc, argv, ret, FIELD_MONTHS, FALSE);
+
+  if (argc > 1)
+    swfdec_as_date_setDate (cx, object, argc - 1, argv + 1, ret);
 }
 
 SWFDEC_AS_NATIVE (103, 128 + 10, swfdec_as_date_setUTCMonth)
@@ -867,6 +888,9 @@ swfdec_as_date_setUTCMonth (SwfdecAsContext *cx, SwfdecAsObject *object,
     guint argc, SwfdecAsValue *argv, SwfdecAsValue *ret)
 {
   swfdec_as_date_set_field (cx, object, argc, argv, ret, FIELD_MONTHS, TRUE);
+
+  if (argc > 1)
+    swfdec_as_date_setUTCDate (cx, object, argc - 1, argv + 1, ret);
 }
 
 SWFDEC_AS_NATIVE (103, 20, swfdec_as_date_setYear)
@@ -875,6 +899,9 @@ swfdec_as_date_setYear (SwfdecAsContext *cx, SwfdecAsObject *object,
     guint argc, SwfdecAsValue *argv, SwfdecAsValue *ret)
 {
   swfdec_as_date_set_field (cx, object, argc, argv, ret, FIELD_YEAR, FALSE);
+
+  if (argc > 1)
+    swfdec_as_date_setMonth (cx, object, argc - 1, argv + 1, ret);
 }
 
 SWFDEC_AS_NATIVE (103, 9, swfdec_as_date_setFullYear)
@@ -884,6 +911,9 @@ swfdec_as_date_setFullYear (SwfdecAsContext *cx, SwfdecAsObject *object,
 {
   swfdec_as_date_set_field (cx, object, argc, argv, ret, FIELD_FULL_YEAR,
       FALSE);
+
+  if (argc > 1)
+    swfdec_as_date_setMonth (cx, object, argc - 1, argv + 1, ret);
 }
 
 SWFDEC_AS_NATIVE (103, 128 + 9, swfdec_as_date_setUTCFullYear)
@@ -893,6 +923,9 @@ swfdec_as_date_setUTCFullYear (SwfdecAsContext *cx, SwfdecAsObject *object,
 {
   swfdec_as_date_set_field (cx, object, argc, argv, ret, FIELD_FULL_YEAR,
       TRUE);
+
+  if (argc > 1)
+    swfdec_as_date_setUTCMonth (cx, object, argc - 1, argv + 1, ret);
 }
 
 // Static methods
commit 68313f3cf98e098f2ad988e09225c15dc8491dce
Author: Pekka Lampila <pekka.lampila at iki.fi>
Date:   Tue Jul 29 14:35:28 2008 +0300

    Fix setting the year for Date with setYear, setFullYear and setUTCFullYear

diff --git a/swfdec/swfdec_as_date.c b/swfdec/swfdec_as_date.c
index 42c5714..b55823c 100644
--- a/swfdec/swfdec_as_date.c
+++ b/swfdec/swfdec_as_date.c
@@ -470,10 +470,11 @@ swfdec_as_date_set_field (SwfdecAsContext *cx, SwfdecAsObject *object,
 	break;
       case FIELD_YEAR:
 	// NOTE: Test against double, not the integer
-	if (d >= 100 || d < 0)
-	  number -= 1900;
+	if (d >= 0 && d < 100)
+	  number += 1900;
 	// fall trough
       case FIELD_FULL_YEAR:
+	number -= 1900;
 	if (!isfinite (d)) {
 	  swfdec_as_date_set_brokentime_value (date, utc, field_offsets[field],
 	      cx, 0 - 1900);
commit 439a3ba7639457c515a6ece5773ea93552364699
Author: Pekka Lampila <pekka.lampila at iki.fi>
Date:   Tue Jul 29 11:52:05 2008 +0300

    Fix Date.setTime with large values

diff --git a/swfdec/swfdec_as_date.c b/swfdec/swfdec_as_date.c
index e4f2cfe..42c5714 100644
--- a/swfdec/swfdec_as_date.c
+++ b/swfdec/swfdec_as_date.c
@@ -762,7 +762,7 @@ swfdec_as_date_setTime (SwfdecAsContext *cx, SwfdecAsObject *object,
 
   if (argc > 0) {
     swfdec_as_date_set_milliseconds_utc (date,
-	swfdec_as_value_to_integer (cx, &argv[0]));
+	trunc (swfdec_as_value_to_number (cx, &argv[0])));
   }
 
   SWFDEC_AS_VALUE_SET_NUMBER (ret, date->milliseconds);
commit f0d1fb2b93b15921c11188bf9349ff15284f196d
Author: Pekka Lampila <pekka.lampila at iki.fi>
Date:   Tue Jul 29 11:34:05 2008 +0300

    Fix handling of multiple Infinity or NaN values in Date's constructor

diff --git a/swfdec/swfdec_as_date.c b/swfdec/swfdec_as_date.c
index 1b3c0e6..e4f2cfe 100644
--- a/swfdec/swfdec_as_date.c
+++ b/swfdec/swfdec_as_date.c
@@ -1102,7 +1102,7 @@ swfdec_as_date_construct (SwfdecAsContext *cx, SwfdecAsObject *object,
 	    &num)) {
 	brokentime.day_of_month = num;
       } else {
-	date->milliseconds = d;
+	date->milliseconds += d;
       }
     } else {
       brokentime.day_of_month = 1;
@@ -1113,7 +1113,7 @@ swfdec_as_date_construct (SwfdecAsContext *cx, SwfdecAsObject *object,
 	    &num)) {
 	brokentime.hours = num;
       } else {
-	date->milliseconds = d;
+	date->milliseconds += d;
       }
     }
 
@@ -1122,7 +1122,7 @@ swfdec_as_date_construct (SwfdecAsContext *cx, SwfdecAsObject *object,
 	    &num)) {
 	brokentime.minutes = num;
       } else {
-	date->milliseconds = d;
+	date->milliseconds += d;
       }
     }
 
@@ -1131,7 +1131,7 @@ swfdec_as_date_construct (SwfdecAsContext *cx, SwfdecAsObject *object,
 	    &num)) {
 	brokentime.seconds = num;
       } else {
-	date->milliseconds = d;
+	date->milliseconds += d;
       }
     }
 
@@ -1146,7 +1146,7 @@ swfdec_as_date_construct (SwfdecAsContext *cx, SwfdecAsObject *object,
 	    &num)) {
 	brokentime.milliseconds += num;
       } else {
-	date->milliseconds = d;
+	date->milliseconds += d;
       }
     }
 
commit 1e936cd84431f63af6ace02c129a456d7781fde4
Author: Benjamin Otte <otte at gnome.org>
Date:   Tue Jul 29 12:39:16 2008 +0200

    back to development

diff --git a/configure.ac b/configure.ac
index 1e5b072..c2653d1 100644
--- a/configure.ac
+++ b/configure.ac
@@ -1,5 +1,5 @@
 AC_PREREQ([2.58])
-AC_INIT(swfdec,0.6.8)
+AC_INIT(swfdec,0.6.9)
 
 [is_dev=$(echo $PACKAGE_VERSION | sed 's/[0-9]\.[0-9][0-9]*\.[0-9]*[13579]/1/')]
 if test x"$is_dev" = x1 ; then
commit 27d12bc6b613dbf97fc8663875e046247e6ca392
Author: Benjamin Otte <otte at gnome.org>
Date:   Tue Jul 29 12:37:39 2008 +0200

    release 0.6.8

diff --git a/configure.ac b/configure.ac
index 7094632..1e5b072 100644
--- a/configure.ac
+++ b/configure.ac
@@ -1,5 +1,5 @@
 AC_PREREQ([2.58])
-AC_INIT(swfdec,0.6.7)
+AC_INIT(swfdec,0.6.8)
 
 [is_dev=$(echo $PACKAGE_VERSION | sed 's/[0-9]\.[0-9][0-9]*\.[0-9]*[13579]/1/')]
 if test x"$is_dev" = x1 ; then
commit a81f45d955b3125b016b9823c22f2576cdd25766
Author: Pekka Lampila <pekka.lampila at iki.fi>
Date:   Tue Jul 29 12:22:16 2008 +0300

    Fix a bug that caused execution to stop when exception was fired on block exit
    
    This break statement was copied from unstable branch without realizing that the
    block in question is if in 0.6 and while in 0.7. Fixes try.as test

diff --git a/swfdec/swfdec_as_context.c b/swfdec/swfdec_as_context.c
index 7d0f7f2..7d85546 100644
--- a/swfdec/swfdec_as_context.c
+++ b/swfdec/swfdec_as_context.c
@@ -914,8 +914,6 @@ start:
       pc = frame->pc;
       if (frame != context->frame)
 	goto start;
-      if (context->exception)
-	break;
     }
     if (context->exception)
       continue;
commit 8290ad31642027169d6fdac852e60375a5b40f53
Author: Benjamin Otte <otte at gnome.org>
Date:   Tue Jul 29 10:47:29 2008 +0200

    use a garbage-collected string here (oops)

diff --git a/swfdec/swfdec_as_date.c b/swfdec/swfdec_as_date.c
index 88bf688..fe2356e 100644
--- a/swfdec/swfdec_as_date.c
+++ b/swfdec/swfdec_as_date.c
@@ -553,7 +553,7 @@ swfdec_as_date_toString (SwfdecAsContext *cx, SwfdecAsObject *object,
   SWFDEC_AS_CHECK (SWFDEC_TYPE_AS_DATE, &date, "");
 
   if (!swfdec_as_date_is_valid (date)) {
-    SWFDEC_AS_VALUE_SET_STRING (ret, "Invalid Date");
+    SWFDEC_AS_VALUE_SET_STRING (ret, SWFDEC_AS_STR_Invalid_Date);
     return;
   }
 
diff --git a/swfdec/swfdec_as_strings.c b/swfdec/swfdec_as_strings.c
index 50db45a..e7428a4 100644
--- a/swfdec/swfdec_as_strings.c
+++ b/swfdec/swfdec_as_strings.c
@@ -491,5 +491,6 @@ const char swfdec_as_strings[] =
   SWFDEC_AS_CONSTANT_STRING ("height")
   SWFDEC_AS_CONSTANT_STRING ("deblocking")
   SWFDEC_AS_CONSTANT_STRING ("smoothing")
+  SWFDEC_AS_CONSTANT_STRING ("Invalid Date")
   /* add more here */
 ;
commit f10a17799d610559b1ac1ca994756a72528bbf58
Author: Benjamin Otte <otte at gnome.org>
Date:   Tue Jul 29 10:16:23 2008 +0200

    update NEWS for 0.6.8

diff --git a/NEWS b/NEWS
index f93dfcc..a17846c 100644
--- a/NEWS
+++ b/NEWS
@@ -1,4 +1,16 @@
 
+ 0.6.8 ("Mario Rush")
+
+And another bugfix release.
+- fix a crash when decoding 1x1 JPEG images
+- fix a crash in XMLSocket.send
+- fix crashes when FLV decoding was aborted
+- fix a crash in exception handling code
+- fix some infinite loops with prototype loops
+- fix crasher when handling broken dates
+- fix crashers with native constructors found in testing
+- compatibility fixes: compile with gold linker, make includes work from C++
+
  0.6.6 ("Faith Fighter")
 
 Here's another bugfix release.


More information about the Swfdec-commits mailing list