Is there a known edge case issue connected to setting the length of dynamic arrays?
I have a program that simulates a billiards game, and during the rerack balls method of TPoolTable the number of pool balls on the table varies based on the rerack option used. Currently, I am having a problem where an exception is thrown if I try to SetLenth(Balls, 10) or greater than 10. Values less than 10 work fine, but at 10 balls and above an exception is thrown right at the SetLength call. External: SIGSEGV 000000000041DCA4 eb12 jmp 0x41dcb8 <SYSTEM_$$_SYSGETMEM_VAR$QWORD$$POINTER+264> 000000000041DCA6 4c89f0 mov %r14,%rax 000000000041DCA9 488b5008 mov 0x8(%rax),%rdx 000000000041DCAD 488b4018 mov 0x18(%rax),%rax 000000000041DCB1 488982a8000000 mov %rax,0xa8(%rdx) ^ instruction pointer is at this line ^ I tried compiler both FPC 3.3.1 from trunk source and 3.2.2 from the official Sourceforge binary. The same error occurs when building with both compilers. My platform is x86_64 Linux. For reference here is the type of Balls: TVec2 = record X, Y: Single; end; TPoolBall = record Pos: TVec2; Dir: TVec2; Speed: Double; Color: LongWord; Touched: Boolean; Sinking: Single; SinkPocket: Integer; SinkPos: TVec2; Pocketed: Boolean; Index: Integer; end; TPoolBalls = array of TPoolBall; ... later inside TPoolTable ... Balls: TPoolBalls;
_______________________________________________ fpc-pascal maillist - fpc-pascal@lists.freepascal.org https://lists.freepascal.org/cgi-bin/mailman/listinfo/fpc-pascal