@@ -4273,6 +4273,7 @@ PHP_FUNCTION(timezone_transitions_get)
42734273	uint64_t              begin  =  0 ;
42744274	bool                  found ;
42754275	zend_long             timestamp_begin  =  ZEND_LONG_MIN , timestamp_end  =  INT32_MAX ;
4276+ 	zend_long             timestamp_added_last  =  ZEND_LONG_MIN ;
42764277
42774278	if  (zend_parse_method_parameters (ZEND_NUM_ARGS (), getThis (), "O|ll" , & object , date_ce_timezone , & timestamp_begin , & timestamp_end ) ==  FAILURE ) {
42784279		RETURN_THROWS ();
@@ -4290,34 +4291,44 @@ PHP_FUNCTION(timezone_transitions_get)
42904291		add_assoc_long(&element, "offset", tzobj->tzi.tz->type[0].offset); \
42914292		add_assoc_bool(&element, "isdst",  tzobj->tzi.tz->type[0].isdst); \
42924293		add_assoc_string(&element, "abbr", &tzobj->tzi.tz->timezone_abbr[tzobj->tzi.tz->type[0].abbr_idx]); \
4293- 		add_next_index_zval(return_value, &element);
4294+ 		add_next_index_zval(return_value, &element); \
4295+ 		timestamp_added_last = timestamp_begin;
42944296
42954297#define  add (i ,ts ) \
4296- 		array_init(&element); \
4297- 		add_assoc_long(&element, "ts",     ts); \
4298- 		add_assoc_str(&element, "time", php_format_date(DATE_FORMAT_ISO8601_LARGE_YEAR, 13, ts, 0)); \
4299- 		add_assoc_long(&element, "offset", tzobj->tzi.tz->type[tzobj->tzi.tz->trans_idx[i]].offset); \
4300- 		add_assoc_bool(&element, "isdst",  tzobj->tzi.tz->type[tzobj->tzi.tz->trans_idx[i]].isdst); \
4301- 		add_assoc_string(&element, "abbr", &tzobj->tzi.tz->timezone_abbr[tzobj->tzi.tz->type[tzobj->tzi.tz->trans_idx[i]].abbr_idx]); \
4302- 		add_next_index_zval(return_value, &element);
4298+ 		if (timestamp_added_last != ts) { \
4299+ 			array_init(&element); \
4300+ 			add_assoc_long(&element, "ts",     ts); \
4301+ 			add_assoc_str(&element, "time", php_format_date(DATE_FORMAT_ISO8601_LARGE_YEAR, 13, ts, 0)); \
4302+ 			add_assoc_long(&element, "offset", tzobj->tzi.tz->type[tzobj->tzi.tz->trans_idx[i]].offset); \
4303+ 			add_assoc_bool(&element, "isdst",  tzobj->tzi.tz->type[tzobj->tzi.tz->trans_idx[i]].isdst); \
4304+ 			add_assoc_string(&element, "abbr", &tzobj->tzi.tz->timezone_abbr[tzobj->tzi.tz->type[tzobj->tzi.tz->trans_idx[i]].abbr_idx]); \
4305+ 			add_next_index_zval(return_value, &element); \
4306+ 			timestamp_added_last = ts; \
4307+ 		}
43034308
43044309#define  add_by_index (i ,ts ) \
4305- 		array_init(&element); \
4306- 		add_assoc_long(&element, "ts",     ts); \
4307- 		add_assoc_str(&element, "time", php_format_date(DATE_FORMAT_ISO8601_LARGE_YEAR, 13, ts, 0)); \
4308- 		add_assoc_long(&element, "offset", tzobj->tzi.tz->type[i].offset); \
4309- 		add_assoc_bool(&element, "isdst",  tzobj->tzi.tz->type[i].isdst); \
4310- 		add_assoc_string(&element, "abbr", &tzobj->tzi.tz->timezone_abbr[tzobj->tzi.tz->type[i].abbr_idx]); \
4311- 		add_next_index_zval(return_value, &element);
4310+ 		if (timestamp_added_last != ts) { \
4311+ 			array_init(&element); \
4312+ 			add_assoc_long(&element, "ts",     ts); \
4313+ 			add_assoc_str(&element, "time", php_format_date(DATE_FORMAT_ISO8601_LARGE_YEAR, 13, ts, 0)); \
4314+ 			add_assoc_long(&element, "offset", tzobj->tzi.tz->type[i].offset); \
4315+ 			add_assoc_bool(&element, "isdst",  tzobj->tzi.tz->type[i].isdst); \
4316+ 			add_assoc_string(&element, "abbr", &tzobj->tzi.tz->timezone_abbr[tzobj->tzi.tz->type[i].abbr_idx]); \
4317+ 			add_next_index_zval(return_value, &element); \
4318+ 			timestamp_added_last = ts; \
4319+ 		}
43124320
43134321#define  add_from_tto (to ,ts ) \
4314- 		array_init(&element); \
4315- 		add_assoc_long(&element, "ts",     ts); \
4316- 		add_assoc_str(&element, "time", php_format_date(DATE_FORMAT_ISO8601_LARGE_YEAR, 13, ts, 0)); \
4317- 		add_assoc_long(&element, "offset", (to)->offset); \
4318- 		add_assoc_bool(&element, "isdst",  (to)->is_dst); \
4319- 		add_assoc_string(&element, "abbr", (to)->abbr); \
4320- 		add_next_index_zval(return_value, &element);
4322+ 		if (timestamp_added_last != ts) { \
4323+ 			array_init(&element); \
4324+ 			add_assoc_long(&element, "ts",     ts); \
4325+ 			add_assoc_str(&element, "time", php_format_date(DATE_FORMAT_ISO8601_LARGE_YEAR, 13, ts, 0)); \
4326+ 			add_assoc_long(&element, "offset", (to)->offset); \
4327+ 			add_assoc_bool(&element, "isdst",  (to)->is_dst); \
4328+ 			add_assoc_string(&element, "abbr", (to)->abbr); \
4329+ 			add_next_index_zval(return_value, &element); \
4330+ 			timestamp_added_last = ts; \
4331+ 		}
43214332
43224333#define  add_last () add(tzobj->tzi.tz->bit64.timecnt - 1, timestamp_begin)
43234334
0 commit comments