[fpc-pascal] fpc 3.2: "Declaration of type TTypeList changed"

Sven Barth pascaldragon at googlemail.com
Fri Apr 26 10:14:15 CEST 2019


Am 25.04.2019 um 22:23 schrieb Luca Olivetti:
> Hello,
>
> as per the subject, I've been bitten by this change:
>
> http://wiki.freepascal.org/User_Changes_Trunk#Declaration_of_type_TTypeList_changed 
>
>
>
> This code (FTasks is a specialization of TFPGList)
>
>   for i:=0 to FTasks.Count-1 do
>   begin
>     FTasks.List^[i].rackData:=FindRack(FTasks[i].rack);
>     FTasks.List^[i].cellData:=
>         FindCell(FTasks[i].rackData,FTasks[i].cell);
>   end;
>
>
> worked before.
>
> Now it compiles with no warnings but it segfaults.
> (This is just an example, there are other instances where I use 
> List^[] and they also segfault).
>
>
> I changed the above code to be
>
>     LocTask:=FTasks[i];
>     LocTask.RackData:=...;
>     LocTask.CellData:=....;
>     FTasks[i]:=LocTask;
>
>
> but I don't understand why the former implementation bombs. The change 
> in the definition of TTypeList shouldn't have that effect, besides, as 
> I said, I get no warning compiling the code (apart from the ton of 
> messages about the assignment not inlined).
Seems I forgot to correctly adjust the GetList methods. I fixed that in 
trunk now and will arange for a merge to 3.2.

Regards,
Sven



More information about the fpc-pascal mailing list