Commits

Jens Alfke committed b973886

Update parents of uncommitted revision more carefully to avoid assertion failures. (Speculatively fixes #147.)

  • Participants
  • Parent commits 567fd2e

Comments (0)

Files changed (1)

File Source/HgRepository.m

     else
         AssertEq([nuRevisions lastObject],_uncommittedRevision);
     
-    // Update the list of revisions, the current revision, and the uncommitted revision's parents:
+    // Now update my public properties ... very carefully.
     [self willChangeValueForKey: @"currentRevision"];
     [self willChangeValueForKey: @"revisions"];
     _currentRevision = curRevNo>=0 ?[nuRevisions objectAtIndex: curRevNo] :nil;
+    
+    // Update parents of the uncommitted revision.
+    // Needs to be done in this order to avoid triggering assertion failures. (See issue #147)
+    _uncommittedRevision.parent2 = nil;
     _uncommittedRevision.parent = _currentRevision;
-    _uncommittedRevision.parent2 = curParent2>=0 ?[nuRevisions objectAtIndex: curParent2] :nil;
+    if (curParent2>=0)
+        _uncommittedRevision.parent2 = [nuRevisions objectAtIndex: curParent2];
+    
     _headRevisions = nil;  // invalidate cache
     if (!$equal(nuRevisions,self.revisions))
         self.revisions = nuRevisions;
     [self didChangeValueForKey: @"revisions"];
     [self didChangeValueForKey: @"currentRevision"];
+    // ...done updating public properties.
 
     [self _checkWorkingTree: &error];
     return YES;