Calendar.enumerateDates internal infinite loop
| Originator: | sr | ||
| Number: | rdar://34011674 | Date Originated: | August 22 2017 |
| Status: | open | Resolved: | |
| Product: | Foundation | Product Version: | iOS 11 |
| Classification: | Bug | Reproducible: | always |
Area:
Foundation
Summary:
Calling Calendar.enumerateDates(startingAfter:, matching:, matchingPolicy:, using:) with certain start dates will hang execution with what looks like an internal infinite loop at year boundaries.
Steps to Reproduce:
Call the mentioned API with certain parameters, see attached playground.
import Foundation
let cal = Calendar(identifier: .gregorian)
let comps = DateComponents(day: 1)
let startDate = ISO8601DateFormatter().date(from: "2017-08-20T00:00:00Z")!
cal.enumerateDates(startingAfter: startDate, matching: comps, matchingPolicy: .nextTime) { (date, _, _) in
print(date!)
}
Expected Results:
print out of every start of the month after the start date
Observed Results:
four values being printed, then the program execution hangs
2017-08-31 22:00:00 +0000
2017-09-30 22:00:00 +0000
2017-10-31 23:00:00 +0000
2017-11-30 23:00:00 +0000
my local timezone being Europe/Berlin (which does not seem to influence the results, though)
Version:
iOS 11 beta from Xcode Version 9.0 beta 6 (9M214v)
also seen live on device with iOS 11 beta 7
Attachment: Playground with same code as above
Comments
Please note: Reports posted here will not necessarily be seen by Apple. All problems should be submitted at bugreport.apple.com before they are posted here. Please only post information for Radars that you have filed yourself, and please do not include Apple confidential information in your posts. Thank you!