memsom at interalpha.co.uk
Fri Aug 29 17:48:47 CEST 2003
> In the development branch THandle is a Cardinal. In the stable 1.0.x
> branch we left it an Longint. In the past there were some issues in the
> with Cardinal. At that moment it was decided to leave thandle at longint.
> And it has been already a longint for 5 years. When it was really a
> problem then it would have been noticed much earlier.
Peter, longint is simply wrong. whist is may work in most circumstances, if
you are on a system with a lot of handles being allocated, you will get to
the realms on 32bit unsigned values. As the normal test for a handle
allocation is :
h := AllocateSomeHandle;
if (h > 0) then Success
you are simply asking for trouble. A negative handle value is not
acceptable. I'm guessing the problems have been got around by the shear luck
of a silent cast when passing an longint to a function expecting a longword.
However it's possible that L D Blake has stumbled accross somewhere where
this is not possible.
It's not actually a Cardinal, it's a DWORD that is the normal Win32 type.
DWORD is mapped to LongWord in Delphi and therefore Cardinal.
More information about the fpc-pascal