From 7b3928db9b61d4eb97b26437d9ea1c9024539d49 Mon Sep 17 00:00:00 2001 From: Andy Matuschak Date: Thu, 15 Nov 2012 22:49:55 -0800 Subject: [PATCH] Fixes #222: Long version ids (12 digits based on reverse date) cause update to work no longer --- SUStandardVersionComparator.m | 12 ++++++------ Tests/SUVersionComparisonTest.m | 5 +++++ 2 files changed, 11 insertions(+), 6 deletions(-) diff --git a/SUStandardVersionComparator.m b/SUStandardVersionComparator.m index 863c48290..2d7d0535c 100644 --- a/SUStandardVersionComparator.m +++ b/SUStandardVersionComparator.m @@ -84,8 +84,8 @@ - (NSComparisonResult)compareVersion:(NSString *)versionA toVersion:(NSString *) NSArray *partsB = [self splitVersionString:versionB]; NSString *partA, *partB; - NSUInteger i, n; - int intA, intB; + int i, n; + long long valueA, valueB; SUCharacterType typeA, typeB; n = MIN([partsA count], [partsB count]); @@ -100,11 +100,11 @@ - (NSComparisonResult)compareVersion:(NSString *)versionA toVersion:(NSString *) if (typeA == typeB) { // Same type; we can compare if (typeA == kNumberType) { - intA = [partA intValue]; - intB = [partB intValue]; - if (intA > intB) { + valueA = [partA longLongValue]; + valueB = [partB longLongValue]; + if (valueA > valueB) { return NSOrderedDescending; - } else if (intA < intB) { + } else if (valueA < valueB) { return NSOrderedAscending; } } else if (typeA == kStringType) { diff --git a/Tests/SUVersionComparisonTest.m b/Tests/SUVersionComparisonTest.m index 8103fc1b7..17759da0c 100644 --- a/Tests/SUVersionComparisonTest.m +++ b/Tests/SUVersionComparisonTest.m @@ -59,4 +59,9 @@ - (void)testWordsWithSpaceInFront // SUAssertEqual(@"1.0 - beta", @"1.0 beta"); } +- (void)testVersionsWithReverseDateBasedNumbers +{ + SUAssertAscending(@"201210251627", @"201211051041"); +} + @end