On 09.03.2019 14:06, Fabio Luis Girardi wrote:
The datatype that throws this error is this (cef3types.pas:2416):

TCefCompositionUnderlineArray = array[0..(High(Integer) div SizeOf(TCefCompositionUnderline)) - 1] of TCefCompositionUnderline;

The TCefCompositionUnderline is a record with 20 bytes of size (5x32 bits fields/vars into this record). So only this var exceeds this limit on 32 bits systems.

The error is throw on this procedure, in cef3ref.pas:1574

procedure TCefBrowserHostRef.ImeSetComposition(const text: ustring; 
underlinesCount: TSize;
   underlines: TCefCompositionUnderlineArray; const replacementRange, 
selectionRange: TCefRange);

I think that 2GB on 64 bits a very conservative limit.

Passing a 2GB array _by value_ as the "underlines" parameter for the procedure 
"ImeSetComposition" is totally wrong.
A pointer to an array of "underlinesCount" size should be passed here.

You should file a bug report for this library.

Yuriy.
_______________________________________________
fpc-pascal maillist  -  fpc-pascal@lists.freepascal.org
http://lists.freepascal.org/cgi-bin/mailman/listinfo/fpc-pascal

Reply via email to