|
@@ -250,25 +250,6 @@ implementation
|
|
symbase,symtable,symtype,symsym,symconst,symdef,defutil,
|
|
symbase,symtable,symtype,symsym,symconst,symdef,defutil,
|
|
fmodule;
|
|
fmodule;
|
|
|
|
|
|
- const
|
|
|
|
- { Same valus as in ppu unit, but
|
|
|
|
- their only goal here is to set change_endian constant }
|
|
|
|
-
|
|
|
|
- uf_big_endian = $000004;
|
|
|
|
- uf_little_endian = $001000;
|
|
|
|
- {$ifdef FPC_BIG_ENDIAN}
|
|
|
|
- target_flags = uf_little_endian;
|
|
|
|
- {$else not FPC_BIG_ENDIAN}
|
|
|
|
- target_flags = uf_big_endian;
|
|
|
|
- {$endif not FPC_BIG_ENDIAN}
|
|
|
|
- {$IFDEF ENDIAN_LITTLE}
|
|
|
|
- source_flags = uf_little_endian;
|
|
|
|
- {$ELSE}
|
|
|
|
- source_flags = uf_big_endian;
|
|
|
|
- {$ENDIF}
|
|
|
|
- { Change_endian must be use to store recordtokenbuf in
|
|
|
|
- target endian order }
|
|
|
|
- change_endian = (source_flags<>target_flags);
|
|
|
|
var
|
|
var
|
|
{ dictionaries with the supported directives }
|
|
{ dictionaries with the supported directives }
|
|
turbo_scannerdirectives : TFPHashObjectList; { for other modes }
|
|
turbo_scannerdirectives : TFPHashObjectList; { for other modes }
|
|
@@ -284,7 +265,6 @@ implementation
|
|
preprocstring : array [preproctyp] of string[7]
|
|
preprocstring : array [preproctyp] of string[7]
|
|
= ('$IFDEF','$IFNDEF','$IF','$IFOPT','$ELSE','$ELSEIF');
|
|
= ('$IFDEF','$IFNDEF','$IF','$IFOPT','$ELSE','$ELSEIF');
|
|
|
|
|
|
-
|
|
|
|
function is_keyword(const s:string):boolean;
|
|
function is_keyword(const s:string):boolean;
|
|
var
|
|
var
|
|
low,high,mid : longint;
|
|
low,high,mid : longint;
|
|
@@ -2103,7 +2083,7 @@ In case not, the value returned can be arbitrary.
|
|
|
|
|
|
procedure tscannerfile.writesizeint(val : sizeint);
|
|
procedure tscannerfile.writesizeint(val : sizeint);
|
|
begin
|
|
begin
|
|
- if change_endian then
|
|
|
|
|
|
+ if target_info.endian <> source_info.endian then
|
|
val:=swapendian(val);
|
|
val:=swapendian(val);
|
|
recordtokenbuf.write(val,sizeof(sizeint));
|
|
recordtokenbuf.write(val,sizeof(sizeint));
|
|
end;
|
|
end;
|
|
@@ -2113,7 +2093,7 @@ In case not, the value returned can be arbitrary.
|
|
val : sizeint;
|
|
val : sizeint;
|
|
begin
|
|
begin
|
|
replaytokenbuf.read(val,sizeof(sizeint));
|
|
replaytokenbuf.read(val,sizeof(sizeint));
|
|
- if change_endian then
|
|
|
|
|
|
+ if target_info.endian <> source_info.endian then
|
|
val:=swapendian(val);
|
|
val:=swapendian(val);
|
|
result:=val;
|
|
result:=val;
|
|
end;
|
|
end;
|
|
@@ -2122,8 +2102,7 @@ In case not, the value returned can be arbitrary.
|
|
var
|
|
var
|
|
t : ttoken;
|
|
t : ttoken;
|
|
s : tspecialgenerictoken;
|
|
s : tspecialgenerictoken;
|
|
- len,val,msgnb : sizeint;
|
|
|
|
- copy_size : longint;
|
|
|
|
|
|
+ len,val,msgnb,copy_size : sizeint;
|
|
b : byte;
|
|
b : byte;
|
|
pmsg : pmessagestaterecord;
|
|
pmsg : pmessagestaterecord;
|
|
begin
|
|
begin
|
|
@@ -2138,7 +2117,7 @@ In case not, the value returned can be arbitrary.
|
|
writetoken(t);
|
|
writetoken(t);
|
|
recordtokenbuf.write(s,1);
|
|
recordtokenbuf.write(s,1);
|
|
copy_size:=sizeof(current_settings)-sizeof(pointer);
|
|
copy_size:=sizeof(current_settings)-sizeof(pointer);
|
|
- recordtokenbuf.write(copy_size,sizeof(longint));
|
|
|
|
|
|
+ writesizeint(copy_size);
|
|
recordtokenbuf.write(current_settings,copy_size);
|
|
recordtokenbuf.write(current_settings,copy_size);
|
|
last_settings:=current_settings;
|
|
last_settings:=current_settings;
|
|
end;
|
|
end;
|
|
@@ -2282,7 +2261,7 @@ In case not, the value returned can be arbitrary.
|
|
|
|
|
|
procedure tscannerfile.replaytoken;
|
|
procedure tscannerfile.replaytoken;
|
|
var
|
|
var
|
|
- wlen,mesgnb : sizeint;
|
|
|
|
|
|
+ wlen,mesgnb,copy_size : sizeint;
|
|
specialtoken : tspecialgenerictoken;
|
|
specialtoken : tspecialgenerictoken;
|
|
i : byte;
|
|
i : byte;
|
|
pmsg,prevmsg : pmessagestaterecord;
|
|
pmsg,prevmsg : pmessagestaterecord;
|
|
@@ -2361,8 +2340,12 @@ In case not, the value returned can be arbitrary.
|
|
else
|
|
else
|
|
case specialtoken of
|
|
case specialtoken of
|
|
ST_LOADSETTINGS:
|
|
ST_LOADSETTINGS:
|
|
- replaytokenbuf.read(current_settings,
|
|
|
|
- sizeof(current_settings)-sizeof(pointer));
|
|
|
|
|
|
+ begin
|
|
|
|
+ copy_size:=readsizeint;
|
|
|
|
+ if copy_size <> sizeof(current_settings)-sizeof(pointer) then
|
|
|
|
+ internalerror(2011090501);
|
|
|
|
+ replaytokenbuf.read(current_settings,copy_size);
|
|
|
|
+ end;
|
|
ST_LOADMESSAGES:
|
|
ST_LOADMESSAGES:
|
|
begin
|
|
begin
|
|
current_settings.pmessage:=nil;
|
|
current_settings.pmessage:=nil;
|
|
@@ -4546,5 +4529,4 @@ exit_label:
|
|
DoneWideString(patternw);
|
|
DoneWideString(patternw);
|
|
end;
|
|
end;
|
|
|
|
|
|
-
|
|
|
|
end.
|
|
end.
|