]> git.sur5r.net Git - cc65/commitdiff
Fixed some code that adjusts an index after a deletion from a collection.
authorGreg King <gregdk@users.sf.net>
Sat, 2 Jul 2016 14:26:33 +0000 (10:26 -0400)
committerGreg King <gregdk@users.sf.net>
Sat, 2 Jul 2016 14:26:33 +0000 (10:26 -0400)
src/common/coll.c
src/common/coll.h

index aa2aa64707c7d2392f3a1a3e2a960784facd9b1b..8fb702bdc9deecc7379b3d89997e8f5c1e73b1f9 100644 (file)
@@ -161,7 +161,7 @@ void CollAppend (Collection* C, void* Item)
 {
     /* Insert the item at the end of the current list */
     CollInsert (C, Item, C->Count);
-}                      
+}
 #endif
 
 
@@ -341,22 +341,23 @@ void CollReplaceExpand (Collection* C, void* Item, unsigned Index)
 
 void CollMove (Collection* C, unsigned OldIndex, unsigned NewIndex)
 /* Move an item from one position in the collection to another. OldIndex
-** is the current position of the item, NewIndex is the new index after
+** is the current position of the item, NewIndex is the new index before
 ** the function has done it's work. Existing entries with indices NewIndex
-** and up are moved one position upwards.
+** and up might be moved one position upwards.
 */
 {
-    /* Get the item and remove it from the collection */
+    /* Get the item; and, remove it from the collection */
     void* Item = CollAt (C, OldIndex);
+
     CollDelete (C, OldIndex);
 
     /* Correct NewIndex if needed */
-    if (NewIndex >= OldIndex) {
+    if (NewIndex > OldIndex) {
         /* Position has changed with removal */
         --NewIndex;
     }
 
-    /* Now insert it at the new position */
+    /* Now, insert it at the new position */
     CollInsert (C, Item, NewIndex);
 }
 
index 5114862c47e21acc1137b66ed5ad51c08cb9e175..99e337d7a4e8ffc3853907779784aacd032e14b4 100644 (file)
@@ -268,9 +268,9 @@ void CollReplaceExpand (Collection* C, void* Item, unsigned Index);
 
 void CollMove (Collection* C, unsigned OldIndex, unsigned NewIndex);
 /* Move an item from one position in the collection to another. OldIndex
-** is the current position of the item, NewIndex is the new index after
+** is the current position of the item, NewIndex is the new index before
 ** the function has done it's work. Existing entries with indices NewIndex
-** and up are moved one position upwards.
+** and up might be moved one position upwards.
 */
 
 void CollMoveMultiple (Collection* C, unsigned Start, unsigned Count, unsigned Target);