@@ -4720,6 +4720,23 @@ static bool date_period_initialize(timelib_time **st, timelib_time **et, timelib
47204720 return retval ;
47214721} /* }}} */
47224722
4723+ static void date_period_reset (php_period_obj * period_obj )
4724+ {
4725+ if (period_obj -> start ) {
4726+ timelib_time_dtor (period_obj -> start );
4727+ }
4728+ if (period_obj -> current ) {
4729+ timelib_time_dtor (period_obj -> current );
4730+ }
4731+ if (period_obj -> end ) {
4732+ timelib_time_dtor (period_obj -> end );
4733+ }
4734+ if (period_obj -> interval ) {
4735+ timelib_rel_time_dtor (period_obj -> interval );
4736+ }
4737+ memset (period_obj , 0 , XtOffsetOf (php_period_obj , std ));
4738+ }
4739+
47234740/* {{{ Creates new DatePeriod object. */
47244741PHP_METHOD (DatePeriod , __construct )
47254742{
@@ -4741,7 +4758,7 @@ PHP_METHOD(DatePeriod, __construct)
47414758 }
47424759
47434760 dpobj = Z_PHPPERIOD_P (ZEND_THIS );
4744- dpobj -> current = NULL ;
4761+ date_period_reset ( dpobj ) ;
47454762
47464763 if (isostr ) {
47474764 if (!date_period_initialize (& (dpobj -> start ), & (dpobj -> end ), & (dpobj -> interval ), & recurrences , isostr , isostr_len )) {
@@ -4780,6 +4797,7 @@ PHP_METHOD(DatePeriod, __construct)
47804797 if (end ) {
47814798 DATE_CHECK_INITIALIZED (Z_PHPDATE_P (end )-> time , DateTimeInterface );
47824799 }
4800+ DATE_CHECK_INITIALIZED (Z_PHPINTERVAL_P (interval )-> initialized , Z_OBJCE_P (interval ));
47834801
47844802 /* init */
47854803 php_interval_obj * intobj = Z_PHPINTERVAL_P (interval );
0 commit comments