Compare commits

..

No commits in common. "mkirk/invalidFinalIndices" and "master" have entirely different histories.

View File

@ -2153,30 +2153,24 @@
// 1 -> 2
// 2 -> 1
// 3 -> 0
//
// Basically, we find the midpoint, and then move each index to the other side of the midpoint,
// but we keep its distance from the midpoint the same.
if ([reverse containsObject:rowChange->originalGroup])
{
NSUInteger count = [originalMappings visibleCountForGroup:rowChange->originalGroup];
NSUInteger forwardIndex = rowChange->originalIndex;
if (count < forwardIndex + 1) {
// Calculating the reverse index would overflow, so we skip it.
NSAssert(NO, @"original index is too large");
} else {
rowChange->originalIndex = count - (forwardIndex + 1);
}
double mid = (count - 1) / 2.0;
rowChange->originalIndex = (NSUInteger)(mid - (rowChange->originalIndex - mid));
}
if ([reverse containsObject:rowChange->finalGroup])
{
NSUInteger count = [finalMappings visibleCountForGroup:rowChange->finalGroup];
NSUInteger forwardIndex = rowChange->finalIndex;
if (count < forwardIndex + 1) {
// This can happen when deleting an item.
// Calculating the reverse index would overflow, so we skip it.
// When deleting a row, the finalIndex is irrelevant anyway.
NSAssert(rowChange->type == YapDatabaseViewChangeDelete, @"final index is too large");
} else {
rowChange->finalIndex = count - (forwardIndex + 1);
}
double mid = (count - 1) / 2.0;
rowChange->finalIndex = (NSUInteger)(mid - (rowChange->finalIndex - mid));
}
}