2
0
Эх сурвалжийг харах

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

git-svn-id: trunk@34955 -

Jonas Maebe 8 жил өмнө
parent
commit
280a6e15b7

+ 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;