summaryrefslogtreecommitdiff
path: root/compiler/cclasses.pas
diff options
context:
space:
mode:
Diffstat (limited to 'compiler/cclasses.pas')
-rw-r--r--compiler/cclasses.pas38
1 files changed, 18 insertions, 20 deletions
diff --git a/compiler/cclasses.pas b/compiler/cclasses.pas
index e700de8c7b..e9c3322e33 100644
--- a/compiler/cclasses.pas
+++ b/compiler/cclasses.pas
@@ -2498,19 +2498,18 @@ end;
begin
p:=pchar(@d);
while (len>0) do
- with FPosnblock^ do
begin
- i:=FPosn-pos;
- if i+len>=size then
+ i:=FPosn-FPosnblock^.pos;
+ if i+len>=FPosnblock^.size then
begin
- j:=size-i;
- move(p^,data[i],j);
+ j:=FPosnblock^.size-i;
+ move(p^,FPosnblock^.data[i],j);
inc(p,j);
inc(FPosn,j);
dec(len,j);
- used:=size;
- if assigned(Next) then
- FPosnblock:=Next
+ FPosnblock^.used:=FPosnblock^.size;
+ if assigned(FPosnblock^.Next) then
+ FPosnblock:=FPosnblock^.Next
else
begin
grow;
@@ -2519,12 +2518,12 @@ end;
end
else
begin
- move(p^,data[i],len);
+ move(p^,FPosnblock^.data[i],len);
inc(p,len);
inc(FPosn,len);
- i:=FPosn-pos;
- if i>used then
- used:=i;
+ i:=FPosn-FPosnblock^.pos;
+ if i>FPosnblock^.used then
+ FPosnblock^.used:=i;
len:=0;
end;
end;
@@ -2545,25 +2544,24 @@ end;
res:=0;
p:=pchar(@d);
while (len>0) do
- with FPosnblock^ do
begin
- i:=FPosn-pos;
- if i+len>=used then
+ i:=FPosn-FPosnblock^.pos;
+ if i+len>=FPosnblock^.used then
begin
- j:=used-i;
- move(data[i],p^,j);
+ j:=FPosnblock^.used-i;
+ move(FPosnblock^.data[i],p^,j);
inc(p,j);
inc(FPosn,j);
inc(res,j);
dec(len,j);
- if assigned(Next) then
- FPosnblock:=Next
+ if assigned(FPosnblock^.Next) then
+ FPosnblock:=FPosnblock^.Next
else
break;
end
else
begin
- move(data[i],p^,len);
+ move(FPosnblock^.data[i],p^,len);
inc(p,len);
inc(FPosn,len);
inc(res,len);