From 77fa5b7fb9d5960044bc93201ad4a102fe749fd1 Mon Sep 17 00:00:00 2001 From: paul <paul@idefix.freepascal.org> Date: Sun, 26 Dec 2010 15:15:20 +0000 Subject: [PATCH] compiler: read and write full token size instead of 1 byte because TToken has more than 255 elements now git-svn-id: trunk@16642 - --- compiler/scanner.pas | 36 +++++++++++++++++++----------------- 1 file changed, 19 insertions(+), 17 deletions(-) diff --git a/compiler/scanner.pas b/compiler/scanner.pas index 55ce11fa54..a5ddee528a 100644 --- a/compiler/scanner.pas +++ b/compiler/scanner.pas @@ -2045,18 +2045,20 @@ In case not, the value returned can be arbitrary. procedure tscannerfile.recordtoken; var - a : array[0..1] of byte; + t : ttoken; + s : tspecialgenerictoken; len : sizeint; begin if not assigned(recordtokenbuf) then internalerror(200511176); + t:=_GENERICSPECIALTOKEN; { settings changed? } if CompareByte(current_settings,last_settings,sizeof(current_settings))<>0 then begin { use a special token to record it } - a[0]:=byte(_GENERICSPECIALTOKEN); - a[1]:=byte(ST_LOADSETTINGS); - recordtokenbuf.write(a,2); + s:=ST_LOADSETTINGS; + recordtokenbuf.write(t,SizeOf(t)); + recordtokenbuf.write(s,1); recordtokenbuf.write(current_settings,sizeof(current_settings)); last_settings:=current_settings; end; @@ -2064,32 +2066,32 @@ In case not, the value returned can be arbitrary. { file pos changes? } if current_tokenpos.line<>last_filepos.line then begin - a[0]:=byte(_GENERICSPECIALTOKEN); - a[1]:=byte(ST_LINE); - recordtokenbuf.write(a,2); + s:=ST_LINE; + recordtokenbuf.write(t,SizeOf(t)); + recordtokenbuf.write(s,1); recordtokenbuf.write(current_tokenpos.line,sizeof(current_tokenpos.line)); last_filepos.line:=current_tokenpos.line; end; if current_tokenpos.column<>last_filepos.column then begin - a[0]:=byte(_GENERICSPECIALTOKEN); - a[1]:=byte(ST_COLUMN); - recordtokenbuf.write(a,2); + s:=ST_COLUMN; + recordtokenbuf.write(t,SizeOf(t)); + recordtokenbuf.write(s,1); recordtokenbuf.write(current_tokenpos.column,sizeof(current_tokenpos.column)); last_filepos.column:=current_tokenpos.column; end; if current_tokenpos.fileindex<>last_filepos.fileindex then begin - a[0]:=byte(_GENERICSPECIALTOKEN); - a[1]:=byte(ST_FILEINDEX); - recordtokenbuf.write(a,2); + s:=ST_FILEINDEX; + recordtokenbuf.write(t,SizeOf(t)); + recordtokenbuf.write(s,1); recordtokenbuf.write(current_tokenpos.fileindex,sizeof(current_tokenpos.fileindex)); last_filepos.fileindex:=current_tokenpos.fileindex; end; - recordtokenbuf.write(token,1); + recordtokenbuf.write(token,SizeOf(token)); if token=_ID then - recordtokenbuf.write(idtoken,1); + recordtokenbuf.write(idtoken,SizeOf(idtoken)); case token of _CWCHAR, _CWSTRING : @@ -2168,9 +2170,9 @@ In case not, the value returned can be arbitrary. end; repeat { load token from the buffer } - replaytokenbuf.read(token,1); + replaytokenbuf.read(token,SizeOf(token)); if token=_ID then - replaytokenbuf.read(idtoken,1) + replaytokenbuf.read(idtoken,SizeOf(idtoken)) else idtoken:=_NOID; case token of