summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAntony Dovgal <tony2001@php.net>2006-07-11 14:15:38 +0000
committerAntony Dovgal <tony2001@php.net>2006-07-11 14:15:38 +0000
commitc68b28f25085bea95a857bd0b80c15b6a85a4a2b (patch)
treed586d3b956004a07e403aae8788bca51af65e96c
parentaf234920c6014810078bba4fb2941c31b43ba926 (diff)
downloadphp-git-c68b28f25085bea95a857bd0b80c15b6a85a4a2b.tar.gz
fix segfault in jfmonthname(), add test
fix tests (I don't have /home/hartmut here =))
-rw-r--r--ext/calendar/gregor.c7
-rw-r--r--ext/calendar/tests/cal_info.phpt6
-rw-r--r--ext/calendar/tests/easter_date.phpt10
-rw-r--r--ext/calendar/tests/jdtomonthname.phpt71
-rw-r--r--ext/calendar/tests/jdtounix.phpt2
5 files changed, 90 insertions, 6 deletions
diff --git a/ext/calendar/gregor.c b/ext/calendar/gregor.c
index f48950901a..c9c0bf761b 100644
--- a/ext/calendar/gregor.c
+++ b/ext/calendar/gregor.c
@@ -154,6 +154,13 @@ void SdnToGregorian(
}
temp = (sdn + GREGOR_SDN_OFFSET) * 4 - 1;
+ if (temp < 0) {
+ *pYear = 0;
+ *pMonth = 0;
+ *pDay = 0;
+ return;
+ }
+
/* Calculate the century (year/100). */
century = temp / DAYS_PER_400_YEARS;
diff --git a/ext/calendar/tests/cal_info.phpt b/ext/calendar/tests/cal_info.phpt
index ae57a87724..2e3e612925 100644
--- a/ext/calendar/tests/cal_info.phpt
+++ b/ext/calendar/tests/cal_info.phpt
@@ -1,5 +1,7 @@
--TEST--
cal_info()
+--INI--
+date.timezone=UTC
--SKIPIF--
<?php include 'skipif.inc'; ?>
--FILE--
@@ -8,7 +10,7 @@ cal_info()
print_r(cal_info(1));
print_r(cal_info(99999));
?>
---EXPECT--
+--EXPECTF--
Array
(
[0] => Array
@@ -211,4 +213,4 @@ Array
[calsymbol] => CAL_JULIAN
)
-Warning: cal_info(): invalid calendar ID 99999. in /home/hartmut/projects/php/dev/head/ext/calendar/tests/cal_info.php on line 4
+Warning: cal_info(): invalid calendar ID 99999. in %s on line %d
diff --git a/ext/calendar/tests/easter_date.phpt b/ext/calendar/tests/easter_date.phpt
index ab00e40c7d..55a3670dad 100644
--- a/ext/calendar/tests/easter_date.phpt
+++ b/ext/calendar/tests/easter_date.phpt
@@ -1,5 +1,7 @@
--TEST--
easter_date()
+--INI--
+date.timezone=UTC
--SKIPIF--
<?php include 'skipif.inc'; ?>
--FILE--
@@ -10,9 +12,9 @@ echo date("Y-m-d", easter_date(2002))."\n";
echo date("Y-m-d", easter_date(1492))."\n";
?>
--EXPECTF--
-2000-04-23
-2001-04-15
-2002-03-31
+2000-04-22
+2001-04-14
+2002-03-30
-Warning: easter_date(): This function is only valid for years between 1970 and 2037 inclusive in %seaster_date.php on line 5
+Warning: easter_date(): This function is only valid for years between 1970 and 2037 inclusive in %s on line %d
1970-01-01
diff --git a/ext/calendar/tests/jdtomonthname.phpt b/ext/calendar/tests/jdtomonthname.phpt
new file mode 100644
index 0000000000..1b5118a96f
--- /dev/null
+++ b/ext/calendar/tests/jdtomonthname.phpt
@@ -0,0 +1,71 @@
+--TEST--
+jdtomonthname() test
+--SKIPIF--
+<?php if (!extension_loaded("calendar")) print "skip"; ?>
+--FILE--
+<?php
+
+$jd_days = Array(
+ 2453396,
+ 2440588,
+ -1,
+ array(),
+ 1000000000
+ );
+
+foreach ($jd_days as $jd_day) {
+ var_dump(jdmonthname($jd_day,0));
+ var_dump(jdmonthname($jd_day,1));
+ var_dump(jdmonthname($jd_day,2));
+ var_dump(jdmonthname($jd_day,3));
+ var_dump(jdmonthname($jd_day,4));
+ var_dump(jdmonthname($jd_day,5));
+}
+
+echo "Done\n";
+
+?>
+--EXPECTF--
+string(3) "Jan"
+string(7) "January"
+string(3) "Jan"
+string(7) "January"
+string(6) "Shevat"
+string(0) ""
+string(3) "Jan"
+string(7) "January"
+string(3) "Dec"
+string(8) "December"
+string(5) "Tevet"
+string(0) ""
+string(0) ""
+string(0) ""
+string(0) ""
+string(0) ""
+string(0) ""
+string(0) ""
+
+Warning: jdmonthname() expects parameter 1 to be long, array given in %s on line %d
+bool(false)
+
+Warning: jdmonthname() expects parameter 1 to be long, array given in %s on line %d
+bool(false)
+
+Warning: jdmonthname() expects parameter 1 to be long, array given in %s on line %d
+bool(false)
+
+Warning: jdmonthname() expects parameter 1 to be long, array given in %s on line %d
+bool(false)
+
+Warning: jdmonthname() expects parameter 1 to be long, array given in %s on line %d
+bool(false)
+
+Warning: jdmonthname() expects parameter 1 to be long, array given in %s on line %d
+bool(false)
+string(0) ""
+string(0) ""
+string(0) ""
+string(0) ""
+string(6) "AdarII"
+string(0) ""
+Done
diff --git a/ext/calendar/tests/jdtounix.phpt b/ext/calendar/tests/jdtounix.phpt
index 055f7fe117..8d85543300 100644
--- a/ext/calendar/tests/jdtounix.phpt
+++ b/ext/calendar/tests/jdtounix.phpt
@@ -1,5 +1,7 @@
--TEST--
jdtounix()
+--INI--
+date.timezone=UTC
--SKIPIF--
<?php include 'skipif.inc'; ?>
--FILE--