Przeglądaj źródła

* fixed deleteindex which didn't reset indexnr and set first wrong

peter 26 lat temu
rodzic
commit
08ae7a72e7
1 zmienionych plików z 13 dodań i 5 usunięć
  1. 13 5
      compiler/cobjects.pas

+ 13 - 5
compiler/cobjects.pas

@@ -1443,6 +1443,7 @@ end;
             data^[i]:=nil;
             data^[i]:=nil;
           end;
           end;
         count:=0;
         count:=0;
+        first:=nil;
       end;
       end;
 
 
 
 
@@ -1478,8 +1479,11 @@ end;
       var
       var
         i : longint;
         i : longint;
       begin
       begin
-        { update linked list }
         i:=p^.indexnr;
         i:=p^.indexnr;
+        { update counter }
+        if i=count then
+         dec(count);
+        { update linked list }
         while (i>0) do
         while (i>0) do
          begin
          begin
            dec(i);
            dec(i);
@@ -1490,10 +1494,11 @@ end;
             end;
             end;
          end;
          end;
         if i=0 then
         if i=0 then
-         first:=p;
-        { remove entry }
-        p^.next:=nil;
+         first:=p^.next;
         data^[p^.indexnr]:=nil;
         data^[p^.indexnr]:=nil;
+        { clear entry }
+        p^.indexnr:=-1;
+        p^.next:=nil;
       end;
       end;
 
 
 
 
@@ -1936,7 +1941,10 @@ end;
 end.
 end.
 {
 {
   $Log$
   $Log$
-  Revision 1.29  1999-05-08 19:47:27  peter
+  Revision 1.30  1999-05-21 10:38:59  peter
+    * fixed deleteindex which didn't reset indexnr and set first wrong
+
+  Revision 1.29  1999/05/08 19:47:27  peter
     * indexarray.delete resets pointer after dispose
     * indexarray.delete resets pointer after dispose
 
 
   Revision 1.28  1999/05/05 10:05:48  florian
   Revision 1.28  1999/05/05 10:05:48  florian