summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAnatol Belski <ab@php.net>2016-03-11 14:12:54 +0100
committerAnatol Belski <ab@php.net>2016-03-11 14:12:54 +0100
commitd26d80ab75e9e495fbda391a9cb0467cf185f39e (patch)
treef34abbc9c3ee271bc27ba58b823db1766f22f840
parent741bfe3932de28c20f401cc7e0447fffb2bea7d6 (diff)
parentf3f5a07aa569d6fba599afcd69c04d6626c57c3f (diff)
downloadphp-git-d26d80ab75e9e495fbda391a9cb0467cf185f39e.tar.gz
Merge branch 'PHP-5.6' into PHP-7.0
* PHP-5.6: Fix DatePeriod::getEndDate() segfault
-rw-r--r--ext/date/php_date.c4
-rw-r--r--ext/date/tests/bug71635.phpt11
2 files changed, 15 insertions, 0 deletions
diff --git a/ext/date/php_date.c b/ext/date/php_date.c
index 2fe78a0e69..c2ef177894 100644
--- a/ext/date/php_date.c
+++ b/ext/date/php_date.c
@@ -4447,6 +4447,10 @@ PHP_METHOD(DatePeriod, getEndDate)
dpobj = Z_PHPPERIOD_P(getThis());
+ if (!dpobj->end) {
+ return;
+ }
+
php_date_instantiate(dpobj->start_ce, return_value);
dateobj = Z_PHPDATE_P(return_value);
dateobj->time = timelib_time_ctor();
diff --git a/ext/date/tests/bug71635.phpt b/ext/date/tests/bug71635.phpt
new file mode 100644
index 0000000000..8c5ae25db3
--- /dev/null
+++ b/ext/date/tests/bug71635.phpt
@@ -0,0 +1,11 @@
+--TEST--
+Bug #71635 (segfault in DatePeriod::getEndDate() when no end date has been set)
+--FILE--
+<?php
+date_default_timezone_set('UTC');
+$period = new DatePeriod(new DateTimeImmutable("now"), new DateInterval("P2Y4DT6H8M"), 2);
+
+var_dump($period->getEndDate());
+?>
+--EXPECT--
+NULL \ No newline at end of file