@@ -4844,7 +4844,8 @@ static bool date_period_initialize(timelib_time **st, timelib_time **et, timelib
48444844 return retval ;
48454845} /* }}} */
48464846
4847- static bool date_period_init_iso8601_string (php_period_obj * dpobj , char * isostr , size_t isostr_len , zend_long options , zend_long * recurrences ) {
4847+ static bool date_period_init_iso8601_string (php_period_obj * dpobj , zend_class_entry * base_ce , char * isostr , size_t isostr_len , zend_long options , zend_long * recurrences )
4848+ {
48484849 if (!date_period_initialize (& (dpobj -> start ), & (dpobj -> end ), & (dpobj -> interval ), recurrences , isostr , isostr_len )) {
48494850 return false;
48504851 }
@@ -4874,12 +4875,13 @@ static bool date_period_init_iso8601_string(php_period_obj *dpobj, char *isostr,
48744875 if (dpobj -> end ) {
48754876 timelib_update_ts (dpobj -> end , NULL );
48764877 }
4877- dpobj -> start_ce = date_ce_date ;
4878+ dpobj -> start_ce = base_ce ;
48784879
48794880 return true;
48804881}
48814882
4882- static bool date_period_init_finish (php_period_obj * dpobj , zend_long options , zend_long recurrences ) {
4883+ static bool date_period_init_finish (php_period_obj * dpobj , zend_long options , zend_long recurrences )
4884+ {
48834885 if (dpobj -> end == NULL && recurrences < 1 ) {
48844886 zend_string * func = get_active_function_or_method_name ();
48854887 zend_throw_exception_ex (date_ce_date_malformed_period_string_exception , 0 , "%s(): Recurrence count must be greater than 0" , ZSTR_VAL (func ));
@@ -4917,7 +4919,7 @@ PHP_METHOD(DatePeriod, createFromISO8601String)
49174919
49184920 dpobj -> current = NULL ;
49194921
4920- if (!date_period_init_iso8601_string (dpobj , isostr , isostr_len , options , & recurrences )) {
4922+ if (!date_period_init_iso8601_string (dpobj , date_ce_immutable , isostr , isostr_len , options , & recurrences )) {
49214923 RETURN_THROWS ();
49224924 }
49234925
@@ -4950,7 +4952,7 @@ PHP_METHOD(DatePeriod, __construct)
49504952 dpobj -> current = NULL ;
49514953
49524954 if (isostr ) {
4953- if (!date_period_init_iso8601_string (dpobj , isostr , isostr_len , options , & recurrences )) {
4955+ if (!date_period_init_iso8601_string (dpobj , date_ce_date , isostr , isostr_len , options , & recurrences )) {
49544956 RETURN_THROWS ();
49554957 }
49564958 } else {
0 commit comments