ecere/Containers/LinkList: Fixed Move to 'first' (after null) of circular linked...
authorJerome St-Louis <jerome@ecere.com>
Tue, 6 Mar 2012 12:18:53 +0000 (07:18 -0500)
committerJerome St-Louis <jerome@ecere.com>
Tue, 6 Mar 2012 12:18:53 +0000 (07:18 -0500)
ecere/src/com/OldList.ec
ecere/src/com/containers/LinkList.ec

index be64855..066c959 100644 (file)
@@ -294,6 +294,7 @@ public:
             if(prevItem == last) 
                last = item;
          
+            link.prev = prevItem ? prevItem : (circ ? last : null);
             if(prevItem)
             {
                link.next = prevLink.next;
@@ -303,8 +304,14 @@ public:
             {
                link.next = first;
                first = item;
+               if(circ)
+               {
+                   if(link.prev)
+                     ((Item)((byte *)link.prev + offset)).next = item;
+                   else
+                      link.next = item;
+               }
             }
-            link.prev = prevItem;
             if(link.next) 
                ((Item) ((byte *)link.next + offset)).prev = item;
          }
index 044f13b..9de8419 100644 (file)
@@ -134,6 +134,7 @@ public:
             if(prevItem == last) 
                last = item;
          
+            item.link.prev = prevItem ? prevItem : (circ ? last : null);
             if(prevItem)
             {
                item.link.next = prevItem.link.next;
@@ -143,8 +144,14 @@ public:
             {
                item.link.next = first;
                first = item;
+               if(circ)
+               {
+                   if(item.link.prev)
+                      item.link.prev.link.next = item;
+                   else
+                      item.link.next = item;
+               }
             }
-            item.link.prev = prevItem;
             if(item.link.next) 
                item.link.next.link.prev = item;
          }