Andrew Brunner wrote:
Following Setup:
  Ubuntu 8.10 x64
  FPC 2.2.3 (latest and greatest)
  Lazarus (Latest and greatest)

I'm seeing an anomaly with reading/writing to an Array[THandle] of Pointers.

TMyStruct=record
  Index:integer;
end;
PMyStruct=^TMyStruct;
TMyList = Array[THandle] of PMyStruct;


If I declare a localized variable
procedure Test();
var
  MyTest:TMyList;
  hThread:THandle;
begin
  hThread:=getCurrentThreadID;
  if (MyTest[hThread])=nil then begin // <---- CRASH HERE EXTERNAL SIGBUS
  end;
end;


This should not crash here.  It should have been nil.

Any work being done in this area or should I report another bug?

I'm surprised it crashes there. A THandle is IIRC a Cardinal on unix, so by defining a variable MyTest:TMyList, you allocate 4GB * SizeOf(TMyStruct) = 16GB on your stack. Usually a process doens't have that much space and I wonder if you wanted this.

(You may want to look at the lcl Maps unit)

Marc

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

Reply via email to