diff --git a/src/RRule.php b/src/RRule.php index 4c46cdb..67a879c 100755 --- a/src/RRule.php +++ b/src/RRule.php @@ -1032,6 +1032,9 @@ class RRule implements RRuleInterface ); } } + else { + $date = clone $date; // avoid reference problems + } return $date; } diff --git a/tests/RRuleTest.php b/tests/RRuleTest.php index 7c9355d..910c053 100755 --- a/tests/RRuleTest.php +++ b/tests/RRuleTest.php @@ -1876,6 +1876,17 @@ class RRuleTest extends PHPUnit_Framework_TestCase public function testDateTimeMutableReferenceBug() { + $date = date_create('2007-01-01'); + $rrule = new RRule(array( + 'freq' => 'daily', + 'count' => 10, + 'dtstart' => $date + )); + $this->assertEquals(date_create('2007-01-01'), $rrule[0]); + $date->modify('+1day'); + $rrule->clearCache(); + $this->assertEquals(date_create('2007-01-01'), $rrule[0], 'No modification possible of dtstart'); + $rrule = new RRule(array( 'freq' => 'daily', 'count' => 10,