[fpc-devel] overflow error in Fpopendir
Michael Van Canneyt
michael at freepascal.org
Thu Jun 30 20:05:13 CEST 2016
On Thu, 30 Jun 2016, Seth Grover wrote:
>
> At +123 I can see that $eax/$ebx contains the correct descriptor, 51345.
> However, when I print $bx in the debugger, it looks like a negative number,
> as if it had overflowed a signed 2-byte integer, so the function errors
> out. This causes the file descriptor to be leaked as well, since no
> reference to is is retained in the pdir record.
>
> I'm a little bit confused at this, as fd is defined as an "integer," which
> I thought was going to always be a 32-bit signed value on this system.
No, it depends solely on the compiler mode.
> However, the FPC documentation tells me that this can be changed based on
> compiler switches, so maybe somewhere up in one of the other .inc files
> there is some flag making "integer" behave as a signed 16-byte number?
>
> I am inclined just to patch my copy of the FPC rtl and change the
> definition of fd from "integer" to "longint," but I wanted to get your take
> on it first.
Best is to use either THandle or cInt, probably the former. The latter may
not be defined in the system unit.
Nice catch !
Michael.
More information about the fpc-devel
mailing list