The program below causes a Segment Violation (SIGSEGV) during compilation using GPC-970510 for DJGPP 2.01.
{-----------------------------------------------------------------------------} Type PEntry = ^TEntry; TEntry = Record Prev : PEntry; { Linked List } Data : Word; End;
TObj = Object Index : PEntry;
Procedure DisposeIndex; End;
Procedure TObj.DisposeIndex;
{$M START} Procedure DisposeEntry(Var Entry:PEntry); {$M STOP} Begin If (Entry <> Nil) Then Begin DisposeEntry(Entry^.Prev); Dispose(Entry); Entry := Nil; End; End;
Begin DisposeEntry(Index); End;
Begin End. {-----------------------------------------------------------------------------}
The problem does not occur if the procedure "DisposeIndex" is NOT a method of an object. If "DisposeIndex" is declared as a normal procedure then the program compiles OK. WEIRD!?!?
I narrowed the problem down to the definition of the nested procedure "DisposeEntry". The second {$M} is never displayed.
Tschuess ________________________ | _) | | e-mail: bernie@icenet.com.au |___)ernhard |_|schirren ptschirrenb@cc.curtin.edu.au www: www.geocities.com/CollegePark/Quad/8070/