diff -uNr fpc/rtl/objpas/classes/classes.inc fpc.new/rtl/objpas/classes/classes.inc --- fpc/rtl/objpas/classes/classes.inc 2005-01-02 21:32:48.000000000 +0000 +++ fpc.new/rtl/objpas/classes/classes.inc 2005-01-22 17:06:11.256645934 +0000 @@ -322,6 +322,10 @@ begin I:=0; + if not Assigned(InitHandlerList) then begin + Result := True; + Exit; + end; Result:=False; With InitHandlerList do begin @@ -1138,14 +1142,15 @@ procedure ProcessObject; var - IsInherited: Boolean; + Flags: Byte; ObjectName, ObjectType: String; + ChildPos: Integer; begin if parser.TokenSymbolIs('OBJECT') then - IsInherited := False + Flags :=0 { IsInherited := False } else begin parser.CheckTokenSymbol('INHERITED'); - IsInherited := True; + Flags := 1; { IsInherited := True; } end; parser.NextToken; parser.CheckToken(toSymbol); @@ -1158,6 +1163,19 @@ ObjectName := ObjectType; ObjectType := parser.TokenString; parser.NextToken; + if parser.Token = '[' then begin + parser.NextToken; + ChildPos := parser.TokenInt; + parser.NextToken; + parser.CheckToken(']'); + parser.NextToken; + Flags := Flags or 2; + end; + end; + if Flags <> 0 then begin + Output.WriteByte($f0 or Flags); + if (Flags and 2) <> 0 then + WriteInteger(ChildPos); end; WriteString(ObjectType); WriteString(ObjectName); diff -uNr fpc/rtl/objpas/classes/reader.inc fpc.new/rtl/objpas/classes/reader.inc --- fpc/rtl/objpas/classes/reader.inc 2005-01-21 23:06:39.000000000 +0000 +++ fpc.new/rtl/objpas/classes/reader.inc 2005-01-22 17:06:11.257645638 +0000 @@ -73,7 +73,7 @@ Flags := TFilerFlags(longint(Prefix and $0f)); if ffChildPos in Flags then begin - ValueType := NextValue; + ValueType := ReadValue; case ValueType of vaInt8: AChildPos := ReadInt8;