@@ -90,9 +90,11 @@ PeriodInternal__split_by_month(const CATALA_TUPLE(CATALA_DATE; CATALA_DATE) p)
9090 CATALA_DATE stop = p [1 ].content ;
9191 int estimated_size ;
9292 CATALA_ARRAY (CATALA_TUPLE (CATALA_DATE ; CATALA_DATE )) ret ;
93+ dc_date * next_end ;
9394 dc_date * next ;
9495 dc_date tmp ;
9596 dc_period one_month ;
97+ dc_period m_one_day ;
9698 char should_continue ;
9799 int idx ;
98100
@@ -109,6 +111,7 @@ PeriodInternal__split_by_month(const CATALA_TUPLE(CATALA_DATE; CATALA_DATE) p)
109111 ret -> elements = catala_malloc (estimated_size * sizeof (CATALA_TUPLE (_ )));
110112
111113 dc_make_period (& one_month , 0 , 1 , 0 );
114+ dc_make_period (& m_one_day , 0 , 0 , -1 );
112115 idx = 0 ;
113116
114117 while (1 ) {
@@ -117,7 +120,9 @@ PeriodInternal__split_by_month(const CATALA_TUPLE(CATALA_DATE; CATALA_DATE) p)
117120 dc_add_dates (next , dc_date_round_abort , & tmp , & one_month );
118121
119122 if (dc_compare_dates (next , stop ) < 0 ){
120- ret -> elements [idx ++ ] = mk_period (start , next );
123+ next_end = catala_malloc (sizeof (dc_date ));
124+ dc_add_dates (next_end , dc_date_round_abort , next , & m_one_day );
125+ ret -> elements [idx ++ ] = mk_period (start , next_end );
121126 start = next ;
122127 continue ;
123128 }
@@ -150,8 +155,10 @@ PeriodInternal__split_by_year(CATALA_INT start_month, const CATALA_TUPLE(CATALA_
150155 int estimated_size ;
151156 CATALA_ARRAY (CATALA_TUPLE (CATALA_DATE ; CATALA_DATE )) ret ;
152157 dc_date * next ;
158+ dc_date * next_end ;
153159 dc_date tmp ;
154160 dc_period one_year ;
161+ dc_period m_one_day ;
155162 char should_continue ;
156163 int idx ;
157164
@@ -169,6 +176,7 @@ PeriodInternal__split_by_year(CATALA_INT start_month, const CATALA_TUPLE(CATALA_
169176 estimated_size = (dc_date_year (stop ) - dc_date_year (start ) + 1 );
170177 ret -> elements = catala_malloc (estimated_size * sizeof (CATALA_TUPLE (_ )));
171178 dc_make_period (& one_year , 1 , 0 , 0 );
179+ dc_make_period (& m_one_day , 0 , 0 , -1 );
172180 idx = 0 ;
173181
174182 while (1 ) {
@@ -177,7 +185,9 @@ PeriodInternal__split_by_year(CATALA_INT start_month, const CATALA_TUPLE(CATALA_
177185 dc_add_dates (next , dc_date_round_abort , & tmp , & one_year );
178186
179187 if (dc_compare_dates (next , stop ) < 0 ){
180- ret -> elements [idx ++ ] = mk_period (start , next );
188+ next_end = catala_malloc (sizeof (dc_date ));
189+ dc_add_dates (next_end , dc_date_round_abort , next , & m_one_day );
190+ ret -> elements [idx ++ ] = mk_period (start , next_end );
181191 start = next ;
182192 continue ;
183193 }
0 commit comments