X-Git-Url: http://www.lcore.org/git/lcore.git/blobdiff_plain/68ac8381cae336dda0cd718dd6fa43b677f5ef8d..dbfefcf1c7180deedc221f927dd01e8cbf3d6d21:/blinklist.pas diff --git a/blinklist.pas b/blinklist.pas index 27232f4..5c3391d 100755 --- a/blinklist.pas +++ b/blinklist.pas @@ -54,11 +54,14 @@ var linklistdebug:integer; implementation + +uses sysutils; procedure linklistadd(var baseptr:tlinklist;newptr:tlinklist); var p:tlinklist; begin + if (newptr=baseptr) or assigned(newptr.prev) then raise exception.create('linklist double insertion detected'); p := baseptr; baseptr := newptr; baseptr.prev := nil; @@ -70,13 +73,16 @@ procedure linklistdel(var baseptr:tlinklist;item:tlinklist); begin if item = baseptr then baseptr := item.next; if item.prev <> nil then item.prev.next := item.next; - if item.next <> nil then item.next.prev := item.prev; + if item.next <> nil then item.next.prev := item.prev; + item.prev := nil; + item.next := nil; end; procedure linklist2add(var baseptr,newptr:tlinklist2); var p:tlinklist2; begin + if (newptr=baseptr) or assigned(newptr.prev2) then raise exception.create('linklist2 double insertion detected'); p := baseptr; baseptr := newptr; baseptr.prev2 := nil; @@ -88,7 +94,9 @@ procedure linklist2del(var baseptr:tlinklist2;item:tlinklist2); begin if item = baseptr then baseptr := item.next2; if item.prev2 <> nil then item.prev2.next2 := item.next2; - if item.next2 <> nil then item.next2.prev2 := item.prev2; + if item.next2 <> nil then item.next2.prev2 := item.prev2; + item.prev2 := nil; + item.next2 := nil; end; constructor tlinklist.create;