Jelajahi Sumber

utils: fix ppudump generic tokenbuf reading

git-svn-id: trunk@16727 -
paul 14 tahun lalu
induk
melakukan
4e93ecda3d
1 mengubah file dengan 8 tambahan dan 11 penghapusan
  1. 8 11
      compiler/utils/ppudump.pp

+ 8 - 11
compiler/utils/ppudump.pp

@@ -871,6 +871,7 @@ type
     mask : tdefstate;
     str  : string[30];
   end;
+  ptoken=^ttoken;
 const
   defopt : array[1..ord(high(tdefoption))] of tdefopt=(
      (mask:df_unique;         str:'Unique Type'),
@@ -893,6 +894,7 @@ var
   first  : boolean;
   tokenbufsize : longint;
   tokenbuf : pbyte;
+  token : ttoken;
   len : sizeint;
   wstring : widestring;
   astring : ansistring;
@@ -945,13 +947,14 @@ begin
       write(space,' Tokens: ');
       while i<tokenbufsize do
         begin
-          if ttoken(tokenbuf[i])<>_GENERICSPECIALTOKEN then
-            write(arraytokeninfo[ttoken(tokenbuf[i])].str);
-          case ttoken(tokenbuf[i]) of
+          token:=ptoken(@tokenbuf[i])^;
+          if token<>_GENERICSPECIALTOKEN then
+            write(arraytokeninfo[token].str);
+          inc(i,SizeOf(token));
+          case token of
             _CWCHAR,
             _CWSTRING :
               begin
-                inc(i);
                 len:=psizeint(@tokenbuf[i])^;
                 inc(i,sizeof(sizeint));
                 setlength(wstring,len);
@@ -961,7 +964,6 @@ begin
               end;
             _CSTRING:
               begin
-                inc(i);
                 len:=psizeint(@tokenbuf[i])^;
                 inc(i,sizeof(sizeint));
                 setlength(astring,len);
@@ -973,14 +975,12 @@ begin
             _INTCONST,
             _REALNUMBER :
               begin
-                inc(i);
                 write(' ',pshortstring(@tokenbuf[i])^);
                 inc(i,tokenbuf[i]+1);
               end;
             _ID :
               begin
-                inc(i);
-                inc(i);
+                inc(i,SizeOf(ttoken)); // idtoken
                 write(' ',pshortstring(@tokenbuf[i])^);
                 inc(i,tokenbuf[i]+1);
               {
@@ -991,7 +991,6 @@ begin
               end;
             _GENERICSPECIALTOKEN:
               begin
-                inc(i);
                 case tspecialgenerictoken(tokenbuf[i]) of
                   ST_LOADSETTINGS:
                     begin
@@ -1031,8 +1030,6 @@ begin
                 continue;
               }
               end;
-            else
-              inc(i);
           end;
 
           if i<tokenbufsize then