* fixed crash

* check if localbrowser is set
This commit is contained in:
peter 1999-04-29 09:36:55 +00:00
parent 7b94465fba
commit adc2a8397d

View File

@ -909,7 +909,7 @@ procedure CreateBrowserCol;
if precdef(definition)^.symtable<>Table then if precdef(definition)^.symtable<>Table then
ProcessSymTable(Symbol,Symbol^.Items,precdef(definition)^.symtable); ProcessSymTable(Symbol,Symbol^.Items,precdef(definition)^.symtable);
objectdef : objectdef :
if precdef(definition)^.symtable<>Table then if pobjectdef(definition)^.publicsyms<>Table then
ProcessSymTable(Symbol,Symbol^.Items,pobjectdef(definition)^.publicsyms); ProcessSymTable(Symbol,Symbol^.Items,pobjectdef(definition)^.publicsyms);
{ leads to infinite loops !! { leads to infinite loops !!
pointerdef : pointerdef :
@ -927,16 +927,18 @@ procedure CreateBrowserCol;
Exit; Exit;
if Owner=nil then if Owner=nil then
Owner:=New(PSortedSymbolCollection, Init(10,50)); Owner:=New(PSortedSymbolCollection, Init(10,50));
{$ifdef OLDPPU}
defcount:=Table^.number_defs; defcount:=Table^.number_defs;
symcount:=Table^.number_symbols; symcount:=Table^.number_symbols;
{ for I:=0 to defcount-1 do
begin
Def:=Table^.GetDefNr(I);
end;}
for I:=1 to symcount do for I:=1 to symcount do
begin begin
Sym:=Table^.GetsymNr(I); Sym:=Table^.GetsymNr(I);
if Sym=nil then Continue; if Sym=nil then Continue;
{$else}
sym:=psym(Table^.symindex^.first);
while assigned(sym) do
begin
{$endif}
ParamCount:=0; ParamCount:=0;
New(Symbol, Init(Sym^.Name,Sym^.Typ,'',nil)); New(Symbol, Init(Sym^.Name,Sym^.Typ,'',nil));
case Sym^.Typ of case Sym^.Typ of
@ -984,7 +986,8 @@ procedure CreateBrowserCol;
with pprocsym(sym)^ do with pprocsym(sym)^ do
if assigned(definition) then if assigned(definition) then
begin begin
ProcessSymTable(Symbol,Symbol^.Items,definition^.parast); if cs_local_browser in aktmoduleswitches then
ProcessSymTable(Symbol,Symbol^.Items,definition^.parast);
if assigned(definition^.parast) then if assigned(definition^.parast) then
begin begin
Symbol^.Params:=TypeNames^.Add(GetAbsProcParmDefStr(definition)); Symbol^.Params:=TypeNames^.Add(GetAbsProcParmDefStr(definition));
@ -995,9 +998,12 @@ procedure CreateBrowserCol;
begin begin
Symbol^.Params:=TypeNames^.Add('...'); Symbol^.Params:=TypeNames^.Add('...');
end; end;
if assigned(definition^.localst) and if cs_local_browser in aktmoduleswitches then
(definition^.localst^.symtabletype<>staticsymtable) then begin
ProcessSymTable(Symbol,Symbol^.Items,definition^.localst); if assigned(definition^.localst) and
(definition^.localst^.symtabletype<>staticsymtable) then
ProcessSymTable(Symbol,Symbol^.Items,definition^.localst);
end;
end; end;
end; end;
typesym : typesym :
@ -1050,7 +1056,10 @@ procedure CreateBrowserCol;
Ref:=Ref^.nextref; Ref:=Ref^.nextref;
end; end;
if Assigned(Symbol) then if Assigned(Symbol) then
Owner^.Insert(Symbol); Owner^.Insert(Symbol);
{$ifndef OLDPPU}
sym:=psym(sym^.next);
{$endif}
end; end;
end; end;
@ -1232,7 +1241,11 @@ begin
end. end.
{ {
$Log$ $Log$
Revision 1.14 1999-04-15 09:01:32 peter Revision 1.15 1999-04-29 09:36:55 peter
* fixed crash
* check if localbrowser is set
Revision 1.14 1999/04/15 09:01:32 peter
* fixed set loading * fixed set loading
* object inheritance support for browser * object inheritance support for browser