when generating a debugger symbol table, GetTypeDisp returns 0 for not found or for a displacement of 0. Not good. This uses a noDisp/-1 const (as does ORCA/C).

This commit is contained in:
Kelvin Sherlock 2018-03-13 15:48:23 -04:00
parent cf72a073f8
commit 012d936d3f
1 changed files with 6 additions and 3 deletions

View File

@ -753,6 +753,9 @@ procedure GenSymbols {sym: ctp; doGlobals: integer};
{ } { }
{ Notes: Defined as extern in Native.pas } { Notes: Defined as extern in Native.pas }
const
noDisp = -1; {disp returned by GetTypeDisp if the type was not found}
type type
tpPtr = ^tpRecord; {type list displacements} tpPtr = ^tpRecord; {type list displacements}
tpRecord = record tpRecord = record
@ -794,7 +797,7 @@ var
if tp2 <> nil then if tp2 <> nil then
GetTypeDisp := tp2^.disp {return disp to entry} GetTypeDisp := tp2^.disp {return disp to entry}
else begin else begin
GetTypeDisp := 0; {no entry} GetTypeDisp := noDisp; {no entry}
new(tp1); {create a new entry} new(tp1); {create a new entry}
tp1^.next := tpList; tp1^.next := tpList;
tpList := tp1; tpList := tp1;
@ -1033,7 +1036,7 @@ var
records, records,
objects: begin objects: begin
disp := GetTypeDisp(tp^.eltype); disp := GetTypeDisp(tp^.eltype);
if disp = 0 then begin if disp = noDisp then begin
if tp^.eltype^.form = records then if tp^.eltype^.form = records then
CnOut(12) CnOut(12)
else else
@ -1072,7 +1075,7 @@ var
records, records,
objects: begin objects: begin
disp := GetTypeDisp(sym^.idtype); disp := GetTypeDisp(sym^.idtype);
if disp = 0 then begin if disp = noDisp then begin
if sym^.idtype^.form = records then if sym^.idtype^.form = records then
CnOut(12) CnOut(12)
else else