소스 검색

Merged revisions 8602 via svnmerge from
svn+ssh://[email protected]/FPC/svn/fpc/trunk

........
r8602 | jonas | 2007-09-22 15:01:30 +0200 (Sat, 22 Sep 2007) | 3 lines

* make sure tai_align.calculatefillbuf no longer destroys the fillsize
field, because it can still be read afterwards

........

git-svn-id: branches/fixes_2_2@8641 -

Jonas Maebe 18 년 전
부모
커밋
00e771fd75
1개의 변경된 파일7개의 추가작업 그리고 3개의 파일을 삭제
  1. 7 3
      compiler/x86/aasmcpu.pas

+ 7 - 3
compiler/x86/aasmcpu.pas

@@ -471,19 +471,23 @@ implementation
       var
         bufptr : pchar;
         j : longint;
+        localsize: byte;
       begin
         inherited calculatefillbuf(buf);
         if not use_op then
          begin
            bufptr:=pchar(@buf);
-           while (fillsize>0) do
+           { fillsize may still be used afterwards, so don't modify }
+           { e.g. writebytes(hp.calculatefillbuf(buf)^,hp.fillsize) }
+           localsize:=fillsize;
+           while (localsize>0) do
             begin
               for j:=low(alignarray) to high(alignarray) do
-               if (fillsize>=length(alignarray[j])) then
+               if (localsize>=length(alignarray[j])) then
                 break;
               move(alignarray[j][1],bufptr^,length(alignarray[j]));
               inc(bufptr,length(alignarray[j]));
-              dec(fillsize,length(alignarray[j]));
+              dec(localsize,length(alignarray[j]));
             end;
          end;
         calculatefillbuf:=pchar(@buf);