Browse Source

* fixed invalid memory reads and potential double freeing when removing
superfluous temporary paralocs for llvm

git-svn-id: trunk@34955 -

Jonas Maebe 8 years ago
parent
commit
280a6e15b7
1 changed files with 3 additions and 3 deletions
  1. 3 3
      compiler/llvm/llvmpara.pas

+ 3 - 3
compiler/llvm/llvmpara.pas

@@ -151,11 +151,11 @@ unit llvmpara;
               paraloc^.register:=hlcg.getaddressregister(list,paraloc^.def);
               paraloc^.shiftval:=0;
               { remove all other paralocs }
-              nextloc:=paraloc^.next;
-              while assigned(nextloc) do
+              while assigned(paraloc^.next) do
                 begin
-                  dispose(nextloc);
                   nextloc:=paraloc^.next;
+                  paraloc^.next:=nextloc^.next;
+                  dispose(nextloc);
                 end;
             end;
           paraloc^.llvmloc.loc:=paraloc^.loc;