mirror of
https://github.com/php/php-src.git
synced 2025-08-16 05:58:45 +02:00
Refactor code to avoid duplication
This commit is contained in:
parent
24085d0192
commit
e38d300a70
3 changed files with 17 additions and 14 deletions
4
NEWS
4
NEWS
|
@ -6,6 +6,10 @@ PHP NEWS
|
|||
. Fixed bug GH-8289 (Exceptions thrown within a yielded from iterator are
|
||||
not rethrown into the generator). (Bob)
|
||||
|
||||
- Date:
|
||||
. Fixed bug GH-7979 (DatePeriod iterator advances when checking if valid).
|
||||
(Derick, Cody Mann)
|
||||
|
||||
- FPM:
|
||||
. Fixed bug #76003 (FPM /status reports wrong number of active processe).
|
||||
(Jakub Zelenka)
|
||||
|
|
|
@ -1492,6 +1492,15 @@ static void date_period_it_current_key(zend_object_iterator *iter, zval *key)
|
|||
}
|
||||
/* }}} */
|
||||
|
||||
static void date_period_advance(timelib_time *it_time, timelib_rel_time *interval)
|
||||
{
|
||||
it_time->have_relative = 1;
|
||||
it_time->relative = *interval;
|
||||
it_time->sse_uptodate = 0;
|
||||
timelib_update_ts(it_time, NULL);
|
||||
timelib_update_from_sse(it_time);
|
||||
}
|
||||
|
||||
/* {{{ date_period_it_move_forward */
|
||||
static void date_period_it_move_forward(zend_object_iterator *iter)
|
||||
{
|
||||
|
@ -1499,11 +1508,7 @@ static void date_period_it_move_forward(zend_object_iterator *iter)
|
|||
php_period_obj *object = Z_PHPPERIOD_P(&iterator->intern.data);
|
||||
timelib_time *it_time = object->current;
|
||||
|
||||
it_time->have_relative = 1;
|
||||
it_time->relative = *object->interval;
|
||||
it_time->sse_uptodate = 0;
|
||||
timelib_update_ts(it_time, NULL);
|
||||
timelib_update_from_sse(it_time);
|
||||
date_period_advance(it_time, object->interval);
|
||||
|
||||
iterator->current_index++;
|
||||
date_period_it_invalidate_current(iter);
|
||||
|
@ -1527,14 +1532,7 @@ static void date_period_it_rewind(zend_object_iterator *iter)
|
|||
iterator->object->current = timelib_time_clone(iterator->object->start);
|
||||
|
||||
if (!iterator->object->include_start_date) {
|
||||
timelib_time *it_time = iterator->object->current;
|
||||
|
||||
it_time->have_relative = 1;
|
||||
it_time->relative = *iterator->object->interval;
|
||||
it_time->sse_uptodate = 0;
|
||||
|
||||
timelib_update_ts(it_time, NULL);
|
||||
timelib_update_from_sse(it_time);
|
||||
date_period_advance(iterator->object->current, iterator->object->interval);
|
||||
}
|
||||
|
||||
date_period_it_invalidate_current(iter);
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
--TEST--
|
||||
Date Period iterators do not advance on `valid()`
|
||||
Date Period iterators do not advance on valid()
|
||||
--FILE--
|
||||
<?php
|
||||
|
||||
|
@ -35,6 +35,7 @@ foreach ($iterator as $item) {
|
|||
$iterator->valid();
|
||||
echo $item->format('Y-m-d') . "\n";
|
||||
}
|
||||
?>
|
||||
--EXPECT--
|
||||
2022-01-01
|
||||
2022-01-02
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue