[fpc-devel] possible 'dynlibs' unit issue
Daniël Mantione
daniel.mantione at freepascal.org
Tue Jan 19 13:39:43 CET 2010
Op Tue, 19 Jan 2010, schreef Graeme Geldenhuys:
> Michael Van Canneyt wrote:
>>
>> Why should it be better ? It doesn't really matter anyway.
>
> PtrUInt has a larger range than PtrInt (allowing full access to memory
> address range). Plus, I don't think pointers can be negative values.
The problem occurs when doing pointer arithmetic "ptrint+integer"
is a bug, because it will overflow if the original pointer<$8000000 and
the result pointer>=$8000000. It is especially dangerous in loops like:
q:=p+distance;
while p<q do
begin
{...}
inc(p);
end;
I don't want to think how many bugs have been coded this way :)
However, when using pointers as handles it is another matter... Handles
are not to be used in any calculation, so they cannot overflow. Who cares
if you get a negative handle?
Daniël
More information about the fpc-devel
mailing list