Skip to content

Commit 8e86e4d

Browse files
mohporparkera
authored andcommitted
Fixed persian calendar segmentation fault (#1714)
* Fixed persian calendar segmentation fault Signed-off-by: Mohammad Porooshani <[email protected]> * Added test case for persian calendar in TestFoundation/TestCalendar Signed-off-by: Mohammad Porooshani <[email protected]> * Fixed test case in test collection. Signed-off-by: Mohammad Porooshani <[email protected]> * fixed closing quote Signed-off-by: Mohammad Porooshani <[email protected]>
1 parent 139e47d commit 8e86e4d

File tree

2 files changed

+15
-0
lines changed

2 files changed

+15
-0
lines changed

CoreFoundation/Locale.subproj/CFCalendar.c

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -270,6 +270,7 @@ CFCalendarRef CFCalendarCreateWithIdentifier(CFAllocatorRef allocator, CFStringR
270270
else if (CFEqual(kCFIslamicCalendar, identifier)) identifier = kCFIslamicCalendar;
271271
else if (CFEqual(kCFIslamicCivilCalendar, identifier)) identifier = kCFIslamicCivilCalendar;
272272
else if (CFEqual(kCFHebrewCalendar, identifier)) identifier = kCFHebrewCalendar;
273+
else if (CFEqual(kCFPersianCalendar, identifier)) identifier = kCFPersianCalendar;
273274
else if (CFEqual(kCFISO8601Calendar, identifier)) identifier = kCFISO8601Calendar;
274275
// else if (CFEqual(kCFChineseCalendar, identifier)) identifier = kCFChineseCalendar;
275276
else return NULL;

TestFoundation/TestCalendar.swift

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,8 @@ class TestCalendar: XCTestCase {
1616
("test_gettingDatesOnHebrewCalendar", test_gettingDatesOnHebrewCalendar ),
1717
("test_gettingDatesOnChineseCalendar", test_gettingDatesOnChineseCalendar),
1818
("test_gettingDatesOnISO8601Calendar", test_gettingDatesOnISO8601Calendar),
19+
("test_gettingDatesOnPersianCalendar",
20+
test_gettingDatesOnPersianCalendar),
1921
("test_copy",test_copy),
2022
("test_addingDates", test_addingDates),
2123
("test_datesNotOnWeekend", test_datesNotOnWeekend),
@@ -117,6 +119,18 @@ class TestCalendar: XCTestCase {
117119
XCTAssertEqual(components.isLeapMonth, true)
118120
}
119121

122+
func test_gettingDatesOnPersianCalendar() {
123+
let date = Date(timeIntervalSince1970: 1539146705)
124+
125+
var calendar = Calendar(identifier: .persian)
126+
calendar.timeZone = TimeZone(identifier: "UTC")!
127+
let components = calendar.dateComponents([.year, .month, .day], from: date)
128+
XCTAssertEqual(components.year, 1397)
129+
XCTAssertEqual(components.month, 7)
130+
XCTAssertEqual(components.day, 18)
131+
132+
}
133+
120134
func test_ampmSymbols() {
121135
let calendar = Calendar(identifier: .gregorian)
122136
XCTAssertEqual(calendar.amSymbol, "AM")

0 commit comments

Comments
 (0)