[Swfdec-commits] Branch '0.6' - 2 commits - swfdec/swfdec_as_date.c test/trace
Pekka Lampila
medar at kemper.freedesktop.org
Thu Jul 3 14:15:58 PDT 2008
swfdec/swfdec_as_date.c | 22 ++++++++++------------
test/trace/Makefile.am | 9 +++++++++
test/trace/crash-0.6.6-date-5.swf |binary
test/trace/crash-0.6.6-date-5.swf.trace | 1 +
test/trace/crash-0.6.6-date-6.swf |binary
test/trace/crash-0.6.6-date-6.swf.trace | 1 +
test/trace/crash-0.6.6-date-7.swf |binary
test/trace/crash-0.6.6-date-7.swf.trace | 1 +
test/trace/crash-0.6.6-date-8.swf |binary
test/trace/crash-0.6.6-date-8.swf.trace | 1 +
test/trace/crash-0.6.6-date.as | 6 ++++++
11 files changed, 29 insertions(+), 12 deletions(-)
New commits:
commit f306940dab44514db0cc8066cafe54c08f233a1c
Author: Pekka Lampila <pekka.lampila at iki.fi>
Date: Fri Jul 4 00:05:01 2008 +0300
Add a test for the Date crash that was just fixed
diff --git a/test/trace/Makefile.am b/test/trace/Makefile.am
index ca1fcd8..8df8035 100644
--- a/test/trace/Makefile.am
+++ b/test/trace/Makefile.am
@@ -736,6 +736,15 @@ EXTRA_DIST = \
crash-0.6.2-try-and-exception-on-dispose-8.swf \
crash-0.6.2-try-and-exception-on-dispose-8.swf.trace \
crash-0.6.2-try-and-exception-on-dispose.as \
+ crash-0.6.6-date-5.swf \
+ crash-0.6.6-date-5.swf.trace \
+ crash-0.6.6-date-6.swf \
+ crash-0.6.6-date-6.swf.trace \
+ crash-0.6.6-date-7.swf \
+ crash-0.6.6-date-7.swf.trace \
+ crash-0.6.6-date-8.swf \
+ crash-0.6.6-date-8.swf.trace \
+ crash-0.6.6-date.as \
crash-0.6.6-xmlsocket-5.swf \
crash-0.6.6-xmlsocket-5.swf.trace \
crash-0.6.6-xmlsocket-6.swf \
diff --git a/test/trace/crash-0.6.6-date-5.swf b/test/trace/crash-0.6.6-date-5.swf
new file mode 100644
index 0000000..eebd1be
Binary files /dev/null and b/test/trace/crash-0.6.6-date-5.swf differ
diff --git a/test/trace/crash-0.6.6-date-5.swf.trace b/test/trace/crash-0.6.6-date-5.swf.trace
new file mode 100644
index 0000000..af368af
--- /dev/null
+++ b/test/trace/crash-0.6.6-date-5.swf.trace
@@ -0,0 +1 @@
+584
diff --git a/test/trace/crash-0.6.6-date-6.swf b/test/trace/crash-0.6.6-date-6.swf
new file mode 100644
index 0000000..7f4d70c
Binary files /dev/null and b/test/trace/crash-0.6.6-date-6.swf differ
diff --git a/test/trace/crash-0.6.6-date-6.swf.trace b/test/trace/crash-0.6.6-date-6.swf.trace
new file mode 100644
index 0000000..af368af
--- /dev/null
+++ b/test/trace/crash-0.6.6-date-6.swf.trace
@@ -0,0 +1 @@
+584
diff --git a/test/trace/crash-0.6.6-date-7.swf b/test/trace/crash-0.6.6-date-7.swf
new file mode 100644
index 0000000..d9946b6
Binary files /dev/null and b/test/trace/crash-0.6.6-date-7.swf differ
diff --git a/test/trace/crash-0.6.6-date-7.swf.trace b/test/trace/crash-0.6.6-date-7.swf.trace
new file mode 100644
index 0000000..af368af
--- /dev/null
+++ b/test/trace/crash-0.6.6-date-7.swf.trace
@@ -0,0 +1 @@
+584
diff --git a/test/trace/crash-0.6.6-date-8.swf b/test/trace/crash-0.6.6-date-8.swf
new file mode 100644
index 0000000..9e0d206
Binary files /dev/null and b/test/trace/crash-0.6.6-date-8.swf differ
diff --git a/test/trace/crash-0.6.6-date-8.swf.trace b/test/trace/crash-0.6.6-date-8.swf.trace
new file mode 100644
index 0000000..af368af
--- /dev/null
+++ b/test/trace/crash-0.6.6-date-8.swf.trace
@@ -0,0 +1 @@
+584
diff --git a/test/trace/crash-0.6.6-date.as b/test/trace/crash-0.6.6-date.as
new file mode 100644
index 0000000..62ab742
--- /dev/null
+++ b/test/trace/crash-0.6.6-date.as
@@ -0,0 +1,6 @@
+// makeswf -v 7 -s 100x150 -r 15 -o crash-0.6.6-date-7.swf crash-0.6.6-date.as
+
+var d = new Date(3.0935415006117e+23);
+trace (d.getUTCMilliseconds());
+
+getURL ("fscommand:quit", "");
commit 8aeca573bb659bb2a5b9607759453a3ece6a563a
Author: Pekka Lampila <pekka.lampila at iki.fi>
Date: Fri Jul 4 00:04:02 2008 +0300
Fix a crash when handling certain really big dates
diff --git a/swfdec/swfdec_as_date.c b/swfdec/swfdec_as_date.c
index 14f1cd9..88bf688 100644
--- a/swfdec/swfdec_as_date.c
+++ b/swfdec/swfdec_as_date.c
@@ -103,28 +103,26 @@ swfdec_as_date_days_in_year (int year)
#define IS_LEAP(year) (swfdec_as_date_days_in_year ((year)) == 366)
static double
-swfdec_as_date_days_since_utc_for_year (int year)
+swfdec_as_date_days_since_utc_for_year (double year)
{
- double year_big = year;
-
- return (
- 365 * (year_big - 1970) +
- floor (((year_big - 1969) / 4.0f)) -
- floor (((year_big - 1901) / 100.0f)) +
- floor (((year_big - 1601) / 400.0f))
+ return floor (
+ 365 * (year - 1970) +
+ floor (((year - 1969) / 4.0f)) -
+ floor (((year - 1901) / 100.0f)) +
+ floor (((year - 1601) / 400.0f))
);
}
-static int
+static double
swfdec_as_date_days_from_utc_to_year (double days)
{
- int low, high, pivot;
+ double low, high, pivot;
low = floor ((days >= 0 ? days / 366.0 : days / 365.0)) + 1970;
high = ceil ((days >= 0 ? days / 365.0 : days / 366.0)) + 1970;
while (low < high) {
- pivot = ((double)low + (double)high) / 2.0;
+ pivot = floor ((low + high) / 2.0);
if (swfdec_as_date_days_since_utc_for_year (pivot) <= days) {
if (swfdec_as_date_days_since_utc_for_year (pivot + 1) > days) {
@@ -145,7 +143,7 @@ swfdec_as_date_milliseconds_to_brokentime (double milliseconds,
BrokenTime *brokentime)
{
double remaining;
- int year;
+ double year;
g_assert (brokentime != NULL);
More information about the Swfdec-commits
mailing list