[Lazarus] Runtime error: INCLOCKED (BUG)

Santiago A. svaa at ciberpiula.net
Fri May 11 11:36:51 CEST 2018


El 29/04/2018 a las 19:38, Vojtěch Čihák via Lazarus escribió:
>
> Hi,
>
>  
>
> I changed line 7:
>
>  
>
> TElement = record
>
>       strr: String;
>
>   end;
>
>   TList = array[0..1] of TElement;  //HERE
>
>   Plist = ^TList;   
>
>  
>
> and demo works. Simply, static and dynamic arrays are not the same.
>
> AFAIR, dynamic array is just pointer while static array are data.
>
> I guess someone else will give you more detailed answer.
>


Yes, but I think that it should be considered a FPC bug

  TList = array of TElement;
  Plist = ^TList;

  TSetting = record
      list: Plist;
  end;

const
  _List: array [0..1] of TElement = (
      (strr: 'a'),
      (strr: 'b'));

  _Settings: array [0..0] of TSetting = ( 
      (list: @_List)); //  <=== This line should rise a compiler error.
You are asigning a pointer to an static array to a pointer to a dynamic
array.

-------------------
You could add a type cast of the pointer to Plist

  _Settings: array [0..0] of TSetting = ( 
      (list: Plist(@_List) ));

You explicitly tell the complier to bypass type check, it is up to deal
with this potential dangerous




>  
>
> V.
>
> ______________________________________________________________
> > Od: Valdas Jankūnas via Lazarus
> > Komu: Lazarus at lists.lazarus-ide.org
> > Datum: 29.04.2018 18:16
> > Předmět: [Lazarus] Runtime error: INCLOCKED
> >
>
>
> type
>   TElement = record
>       strr: String;
>   end;
>   TList = array of TElement;
>   Plist = ^TList;
> .....
>
> Why I getting that error? Something wrong with records and constant
> initialization?
>
> My system is: Linux 4.13.0-39-generic #44-Ubuntu SMP Thu Apr 5
> 14:25:01 UTC 2018 x86_64 x86_64 x86_64 GNU/Linux
> FPC (from SVN): 3.1.1 [2018/02/21] for x86_64
> -- 
>   Valdas Jankūnas
> -- 
> _______________________________________________
> Lazarus mailing list
> Lazarus at lists.lazarus-ide.org
> https://lists.lazarus-ide.org/listinfo/lazarus
>
>

-- 
Saludos

Santiago A.

-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.lazarus-ide.org/pipermail/lazarus/attachments/20180511/6c3c22da/attachment.html>


More information about the Lazarus mailing list