summaryrefslogtreecommitdiff
path: root/ext/calendar
diff options
context:
space:
mode:
authorAntony Dovgal <tony2001@php.net>2006-07-11 14:16:26 +0000
committerAntony Dovgal <tony2001@php.net>2006-07-11 14:16:26 +0000
commitb491930ef63ba3bd369054dd7e9716e16e7dad1a (patch)
treee084dca7e418563956b5fbae98c0472525587470 /ext/calendar
parent5e93a7df9a06e7c1b5f787328000cbd346a3ec26 (diff)
downloadphp-git-b491930ef63ba3bd369054dd7e9716e16e7dad1a.tar.gz
fix segfault in jdmonthname(), add test
Diffstat (limited to 'ext/calendar')
-rw-r--r--ext/calendar/gregor.c7
-rw-r--r--ext/calendar/tests/jdtomonthname.phpt71
2 files changed, 78 insertions, 0 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/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